代码之家  ›  专栏  ›  技术社区  ›  ambiso

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

  •  1
  • ambiso  · 技术社区  · 8 年前

    make install 奥卡姆wasm 1

    很遗憾,生成失败,并显示错误消息:

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

    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: 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 回复  |  直到 8 年前
        1
  •  1
  •   gasche    7 年前

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

    由于这个问题,ocamlbuild0.13没有打包到opam上(因此大多数用户看不到它),但是我没有考虑到发行包商可能会决定打包它。

    推荐文章