ocamlc-编译ocaml-wasm-错误:/usr/lib/ocaml/bigarray.cma不是字节码目标文件

时间:2018-10-13 12:52:40

标签: ocaml ocamlbuild

我正在尝试make install ocaml-wasm 1

不幸的是,构建失败并显示错误消息:

Error: /usr/lib/ocaml/bigarray.cma is not a bytecode object file

这是一个Dockerfile,因此您可以重现该错误:

FROM base/archlinux

RUN pacman -Sy --noconfirm ocaml ocamlbuild wget unzip make
RUN wget https://github.com/WebAssembly/spec/archive/v1.0.zip
RUN unzip v1.0.zip

CMD cd spec-1.0; make -C interpreter install; bash

您可以运行它:

docker build -t ocaml-wasm . && docker run --rm -it ocaml-wasm

它应该发现它会产生与上述相同的错误。 这是make命令的全部输出:

make: Entering directory '/spec-1.0/interpreter'
ls util/*.ml* syntax/*.ml* binary/*.ml* text/*.ml* valid/*.ml* runtime/*.ml* exec/*.ml* script/*.ml* host/*.ml* main/*.ml* \                                                                                      
        | sed 's:\(.*/\)\{0,1\}\(.*\)\.[^\.]*:\2:' \
        | grep -v main \
        | sort | uniq \
        >wasm.mlpack
echo >_tags "true: bin_annot"
echo >>_tags "<{util,syntax,binary,text,valid,runtime,exec,script,host,main}/*.cmx>: for-pack(Wasm)"
ocamlbuild -cflags '-w +a-4-27-42-44-45 -warn-error +a' -I util -I syntax -I binary -I text -I valid -I runtime -I exec -I script -I host -I main -libs bigarray -quiet wasm.cmx                                  
+ /usr/bin/ocamlc.opt -pack bigarray.cma -bin-annot util/lib.cmo binary/utf8.cmo exec/float.cmo exec/f32.cmo exec/f64.cmo exec/numeric_error.cmo exec/int.cmo exec/i32.cmo exec/i64.cmo syntax/types.cmo syntax/values.cmo runtime/memory.cmo util/source.cmo syntax/ast.cmo util/error.cmo binary/encode.cmo exec/i64_convert.cmo syntax/operators.cmo binary/decode.cmo script/script.cmo text/parser.cmo text/lexer.cmo text/parse.cmo util/sexpr.cmo text/arrange.cmo exec/i32_convert.cmo exec/f32_convert.cmo exec/f64_convert.cmo exec/eval_numeric.cmo runtime/func.cmo runtime/global.cmo runtime/table.cmo runtime/instance.cmo exec/eval.cmo host/env.cmo main/flags.cmo script/import.cmo script/js.cmo text/print.cmo valid/valid.cmo script/run.cmo host/spectest.cmo -o wasm.cmo                                                                            
File "_none_", line 1:
Error: /usr/lib/ocaml/bigarray.cma is not a bytecode object file
Command exited with code 2.
make: *** [Makefile:83: _build/wasm.cmx] Error 10
rm wasm.mlpack _tags
make: Leaving directory '/spec-1.0/interpreter'

如何获取ocaml-wasm进行编译?

我见过2,但答案无济于事。我尚未安装任何非标准二进制文件。能否在arch linux上的ocaml发行版被破坏?

1 个答案:

答案 0 :(得分:0)

我怀疑您的ocamlbuild版本为0.13(请参阅ocamlbuild --version),已知存在此问题。您应该使用0.12来避免此问题。

由于这个问题,ocamlbuild 0.13不能在opam上打包(因此它对大多数用户不可见),但是我还没有考虑分发打包者可能会决定打包它。

相关问题