2016-05-08 6 views
-1

Я работал над учебником LLVM Kaleidoscope для OCaml. На third part of the tutorial, я переходите к примеру кода в папкеUnbound module llvm

OCaml-Kaleidoscope\Chapter3

Я встречая проблема при компиляции с

ocamlbuild toy.byte 

на Cygwin. Это код, указанный в учебнике для компиляции.

Ошибка я получаю

''ocamlc.opt -c -o codegen.cmo codegen.ml 
File "codegen.ml", line 5, characters 5-9: 
Error: Unbound module Llvm 
Exit code 2 while executing this command: 
''ocamlc.opt -c -o codegen.cmo codegen.ml 

Я посмотрел некоторые решения этой проблемы. Одно решение, которое я нашел в том, чтобы использовать

ocamlbuild -use-ocamlfind toy.byte -package llvm 

вместо

ocamlbuild toy.byte 

Однако, когда я пытался, что я получил эту ошибку:

Failure: ocamlfind not found on path, but -no-ocamlfind not used. 

Чтобы исправить это я пытался:

opam install ocamlfind 

Но ocamlfind является alr установленный.

Другое решение, которое я нашел было использовать:

opam install llvm 

В результате:

The following actions will be performed: 
    - install llvm 3.7 

=-=- Gathering sources =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 

=-=- Processing actions -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 
[llvm: ./install.sh 3.7] Command started 
[ERROR] The installation of llvm failed at "./install.sh 3.7 make 
     C:\\cygwin64\\home\\setup\\.opam\\system 
     C:\\cygwin64\\home\\setup\\.opam\\system\\lib". 
[llvm: ocamlfind remove] Command started 

#=== ERROR while installing llvm.3.7 ==========================================# 
# opam-version   1.3.0~dev2 (d4f7e01216dbb44af4e7cc6539a1b0afa9be9d2c) 
# os     win32 
# command    bash -c ./install.sh 3.7 make C:/cygwin64/home/setup/.opa        m/system C:/cygwin64/home/setup/.opam/system/lib 
# path     C:\cygwin64\home\setup\.opam\system\build\llvm.3.7 
# exit-code   2 
# env-file    C:\cygwin64\home\setup\.opam\system\build\llvm.3.7\llvm-1        0768-58c514.env 
# stdout-file   C:\cygwin64\home\setup\.opam\system\build\llvm.3.7\llvm-1        0768-58c514.out 
# stderr-file   C:\cygwin64\home\setup\.opam\system\build\llvm.3.7\llvm-1        0768-58c514.err 
### stdout ### 
# [...] 
# config.status: executing bindings/ocaml/Makefile.ocaml commands 
# make: Entering directory '/home/setup/.opam/system/build/llvm.3.7/build/bindin        gs' 
# llvm[0]: Constructing LLVMBuild project information. 
# make[1]: Entering directory '/home/setup/.opam/system/build/llvm.3.7/build/bin        dings/ocaml' 
# make[2]: Entering directory '/home/setup/.opam/system/build/llvm.3.7/build/bin        dings/ocaml/llvm' 
# llvm[2]: Compiling llvm_ocaml.c for Release+Asserts build 
# /home/setup/.opam/system/build/llvm.3.7/Makefile.rules:1536: recipe for target        '/home/setup/.opam/system/build/llvm.3.7/build/bindings/ocaml/llvm/Release+Asse        rts/llvm_ocaml.o' failed 
# make[2]: Leaving directory '/home/setup/.opam/system/build/llvm.3.7/build/bind        ings/ocaml/llvm' 
# /home/setup/.opam/system/build/llvm.3.7/Makefile.rules:880: recipe for target        'all' failed 
# make[1]: Leaving directory '/home/setup/.opam/system/build/llvm.3.7/build/bind        ings/ocaml' 
# /home/setup/.opam/system/build/llvm.3.7/Makefile.rules:939: recipe for target        'ocaml/.makeall' failed 
# make: Leaving directory '/home/setup/.opam/system/build/llvm.3.7/build/binding        s' 
### stderr ### 
# [...] 
# configure: WARNING: dlopen() not found - disabling plugin support 
# configure: WARNING: mmap() of a fixed address required but not supported 
# configure: WARNING: mmap() of files required but not found 
# configure: WARNING: --enable-bindings=ocaml specified, but OUnit 2 is not inst        alled. Tests will not run 
# + make -C bindings all SYSTEM_LLVM_CONFIG=llvm-config 
# gcc.exe: error: /home/setup/.opam/system/build/llvm.3.7/bindings/ocaml/llvm/ll        vm_ocaml.c: No such file or directory 
# gcc.exe: fatal error: no input files 
# compilation terminated. 
# /usr/bin/rm: cannot remove '/home/setup/.opam/system/build/llvm.3.7/build/bind        ings/ocaml/llvm/Release+Asserts/llvm_ocaml.d.tmp': No such file or directory 
# make[2]: *** [/home/setup/.opam/system/build/llvm.3.7/build/bindings/ocaml/llv        m/Release+Asserts/llvm_ocaml.o] Error 1 
# make[1]: *** [all] Error 1 
# make: *** [ocaml/.makeall] Error 2 



=-=- Error report -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 
The following actions failed 
    - install llvm 3.7 
No changes have been performed 

=-=- llvm.3.7 troubleshooting -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 
=> This package relies on external (system) dependencies that may be missing. 
    `opam depext llvm.3.7' may help you find the correct installation for your 
    system. 

Я использую версию 3.8.0 из LLVM и версии 4.02.3 от OCaml из this link.

Есть ли я на правильном пути? Что мне нужно сделать, чтобы исправить это?

ответ

1

Как я уже ответил на ваш вопрос LLVM tutorial OCaml Compilation Assembler Error, ваш лучший способ - не использовать Windows.

OPAM теперь можно использовать в Cygwin OCaml или даже в MinGW OCaml (используя Cygwin opam binary), но пакеты в репозитории OPAM не тестируются в этих средах. Просто избегайте их, если у вас нет опыта разработки OCaml в Windows.

Если вы придерживаетесь Windows, тогда проверьте сборку на C:\cygwin64\home\setup\.opam\system\build\llvm.3.7. Должны быть файлы журнала stdout и stderr, которые могут помочь понять, что происходит.

 Смежные вопросы

  • Нет связанных вопросов^_^