2016-06-09 53 views
0

我有了這個程序叫做threadtest.ml如何鏈接Cygwin中的Thread模塊?

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 

我在做什麼錯?我還沒有找到這個錯誤的任何解釋。

UPDATE:

我也試着按照這裏的說明基礎重建我的系統:https://stackoverflow.com/a/37616907/714167

,但似乎沒有奏效。

+0

的[錯誤與在Cygwin Ocaml程序編寫線程模塊鏈接]可能的複製(http://stackoverflow.com/questions/37647206/error-linking-with-ocaml-thread-module-on-cygwin) – camlspotter

+0

你應該用這個代碼示例改進了你以前的問題。 – camlspotter

+0

沒有人回答這個問題,所以我沒有回答這個問題,沒有項目特定的信息,希望這會鼓勵人們看到它。我刪除了上一個問題。 –

回答

1

你應該ocamlc -thread unix.cma threads.cma threadtest.ml

[編輯]編譯爲camlspotter在評論中說,它可以是一個Cygwin32問題,這裏有一個複製/粘貼那些和我一樣,是從來不看的評論(等待OP知道,如果它的工作原理):

camlspotter:我Cygwin的OCaml有代碼的連接沒有問題。如果我是你,我會清理cygwin(如果存在的話flexdll)並重新開始。如果您使用的是Cygwin32,則可能遷移到Cygwin64可能會解決您的問題:我有許多與Cygwin32相關的rebase相關問題並放棄了它。

+1

是的,'threads.cma'必須鏈接,但這是另一個問題。他的問題可能是由於flexdll的錯誤安裝或cygwin的損壞。 – camlspotter

+0

確實。我會等待他的回答,然後;-) – Lhooq

+0

我認爲你是對的,但它仍然沒有解決鏈接問題。 –