ocamlc - компиляция ocaml-wasm - Ошибка: /usr/lib/ocaml/bigarray.cma не является объектным файлом с байт-кодом - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь 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 , но ответ немне не поможетЯ не установил никаких нестандартных двоичных файлов.Может ли быть сломан дистрибутив ocaml на arch linux?

1 Ответ

0 голосов
/ 24 октября 2018

Я подозреваю, что ваша версия ocamlbuild 0.13 (см. ocamlbuild --version), которая, как известно, имеет эту проблему.Вы должны использовать 0.12, чтобы избежать этой проблемы.

ocamlbuild 0.13 не является пакетом для opam из-за этой проблемы (поэтому он не виден большинству пользователей), но я не думал, что дистрибутивные пакеты могут решить его упаковатьтем не менее.

...