如何链接Cygwin中的Thread模块?

时间:2016-06-09 23:54:18

标签: multithreading cygwin ocaml

我有一个名为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

但似乎没有任何效果。

1 个答案:

答案 0 :(得分:1)

您应该使用ocamlc -thread unix.cma threads.cma threadtest.ml

进行编译

[编辑] 正如camlspotter在评论中所说的那样,它可能是一个Cygwin32问题,这里是像我一样的复制/粘贴,从未读过评论(等待OP知道是否它有效):

  

camlspotter:我的Cygwin OCaml没有链接代码的问题。如果我是你,我会清理cygwin(和flexdll,如果存在)并重新开始。如果您正在使用Cygwin32,可能迁移到Cygwin64可能会解决您的问题:我与Cygwin32有太多与rebase相关的问题而放弃它。