簡體   English   中英

(Ocaml)錯誤:未綁定的模塊Ocamlbuild_pack.Ocamlbuild_Myocamlbuild_config

[英](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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM