我有一个名为threadtest.ml
的程序:
Thread.join (Thread.create (fun _ -> print_string "Hello, World!\n") ())
我正在编译它:
$ ocamlc -thread unix.cma threads.cma -o threadtest threadtest.ml
File "threadtest.ml", line 1:
Error: Error on dynamically loaded library: /usr/lib/ocaml/stublibs/dllunix.so: flexdll error: cannot relocate RELOC_REL32, target is too far: 0xfffffffc020c7112 0x20c7112
这是我所拥有的ocamlc
版本。
$ ocamlc -v
The OCaml compiler, version 4.02.3
Standard library directory: /usr/lib/ocaml
我做错了什么?我没有找到任何关于此错误的解释。
更新:
我还尝试按照此处的说明重新定位我的系统:https://stackoverflow.com/a/37616907/714167
但似乎没有任何效果。
答案 0 :(得分:1)
您应该使用ocamlc -thread unix.cma threads.cma threadtest.ml
[编辑] 正如camlspotter在评论中所说的那样,它可能是一个Cygwin32问题,这里是像我一样的复制/粘贴,从未读过评论(等待OP知道是否它有效):
camlspotter:我的Cygwin OCaml没有链接代码的问题。如果我是你,我会清理cygwin(和flexdll,如果存在)并重新开始。如果您正在使用Cygwin32,可能迁移到Cygwin64可能会解决您的问题:我与Cygwin32有太多与rebase相关的问题而放弃它。