[英](Ocaml) Error: Unbound module Ocamlbuild_pack.Ocamlbuild_Myocamlbuild_config
我正在嘗試編譯ocaml程序(其一部分如下所示)
open Ocamlbuild_plugin
open Command
(** helper functions )
( splitting strings using a delimeter character *)
let rec strsplit sep str accu len =
try let idx = String.rindex_from str (len - 1) sep in
strsplit sep str ((String.sub str (idx + 1) (len - 1 - idx)) :: accu) idx
with Not_found -> (String.sub str 0 len) :: accu
let strsplit sep str = strsplit sep str [] (String.length str)
(** initializing variables from the environment *)
let host = Ocamlbuild_pack.Ocamlbuild_Myocamlbuild_config.system
最后一行導致未綁定的模塊錯誤。 我能做什么? 謝謝
更新1:
該代碼來自github項目https://github.com/ykazakov/cb-reasoner
而且我正在按照一條指令使用“ make”來編譯程序..這個make文件看起來像這樣
BUILDDIR ?= _build
OCAMLBUILD ?= ocamlbuild
OCAMLBUILD := $(OCAMLBUILD) -build-dir $(BUILDDIR)
.PHONY: main clean clib
main:
$(OCAMLBUILD) main/cb.native
all:
$(OCAMLBUILD) main/cb.native jni cwrap/libcb.a
cwrap:
$(OCAMLBUILD) cwrap/libcb.a
jni:
$(OCAMLBUILD) jni
clean:
$(OCAMLBUILD) -clean;\
rm -f cb.native
我在ocamlbuild問題跟蹤器上回答了這個問題(我關注StackOverflow,但不太緊密,對不起)。 為方便起見,在下面引用:
OCamlbuild將穩定的接口導出為插件用戶,作為
Ocamlbuild_plugin
模塊。 使用Ocamlbuild_pack
直接訪問ocamlbuild的內部定義,因此建議不要這樣做,因為不能保證向后兼容。在您的特定情況下,此代碼使用的模塊實際上已在較新的ocamlbuild版本中刪除(其存在是ocamlbuild的構建系統集成到編譯器發行版中的特定方式的構件)。 我可以使用OCaml 3.12.1、4.00.1和4.01.0正確構建此軟件,但不能使用OCaml和ocamlbuild的任何更新版本。
使用
opam
可以輕松安裝舊的OCaml版本:opam install 4.01.0 eval $(opam env --switch=4.01.0) make # if in the project's directoyr
如果您有興趣修補此軟件以使其與最新的OCaml版本兼容,我們可以討論如何以更可靠的方式獲取相應的信息。
無論如何,我要關閉它,因為這不是ocamlbuild的問題,而是cb-reasoner的維護問題。 (當然,請隨時發表進一步的評論。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.