2013-05-14 53 views
18

我使用Jane Streetasync_core_tags中加入package(async_core)如何在ocamlbuild中使用-thread編譯器標誌?

當我使用,它給了我下面的錯誤:

camlfind ocamlopt -linkpkg -package async_core -package unix -package netclient -package mongo -package xml-light src/airport.cmx test/test_airport.cmx -o test/test_airport.native ocamlfind: Error from package `threads': Missing -thread or -vmthread switch


我GOOGLE了它,這裏是我得到了什麼http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual039.html

它說:

Programs that use system threads must be linked as follows:

ocamlc -thread other options unix.cma threads.cma other files 

所以我改變了我的ocamlbuild命令,像這樣:

ocamlbuild -use-ocamlfind -cflag -thread -I src test/test_airport.native

但是,錯誤保持不變。也沒有-thread ocamlbuild生成的實際命令保持不變。


我該如何處理?

+0

誰恨我這麼多,使我的每個問題倒下了? –

回答

18

你想知道的是,是否有一個ocamlbuild標記(〜特徵)將-thread參數添加到相關的命令行,而不是以不令人滿意的方式使用-cflag來攻擊它。作爲解釋in this blog post,你應該使用-documentation選項ocamlbuild的:

% ocamlbuild -documentation | grep thread 
flag {. byte, link, ocaml, program, thread .} "threads.cma -thread" 
flag {. link, native, ocaml, program, thread .} "threads.cmxa -thread" 
flag {. doc, ocaml, thread .} "-I +threads" 
flag {. compile, ocaml, thread .} "-thread" 

所以答案是:在相關的地方在_tags添加-tag thread您ocamlbuild調用 線,或只是thread

+2

在這個極不可能的情況下,gasche的答案還不夠清楚,這裏有一個_tags文件janestreet用於他們的一次談話中:https://bitbucket.org/yminsky/core-hello-world/src/85769e337d3e70a4b9e3246503f59991c109afe8/_tags?at=默認 – rgrinberg

+1

謝謝。我想我還沒有理解ocamlbuild –

+0

@JacksonTale中的標籤,換句話說,你必須在編譯項目的目錄中創建一個'_tags'文件。 'ocamlbuild'將搜索'_tags'文件中的標誌,並用'_tags'文件中指定的文件的相應標誌調用必要的命令。 –

相關問題