誰も返信しなかったquestion on the ocaml listservを投稿しました。ここにいる誰かが私をバカと呼んで、状況を確認したり、創造的な解決策を提供してくれることを願っています。OCamlbuildとネイティブダイナミックリンクライブラリの構築
/opt/ocaml-3.12.1/bin/ocamlopt.opt -shared -verbose -cc gcc plugins/example.cmx -o plugins/example.cmxs -ccopt -v
+ as -o 'plugins/example.cmxs.startup.o' '/tmp/camlstartupe6993f.s'
+ gcc -o 'plugins/example.cmxs' '-L/opt/ocaml-3.12.1/lib/ocaml' -v 'plugins/example.cmxs.startup.o' 'plugins/example.o'
、私は最終的にリンクラインで立ち往生ocamlbuild
を通じて動的ライブラリを構築する。これは、hereのようなエラーが作成されます
。このエラーは、-cc
オプションを削除し、-shared
フラグがgcc
に渡されたときに修正されます。
/opt/ocaml-3.12.1/bin/ocamlopt.opt -shared -verbose plugins/example.cmx -o plugins/example.cmxs -ccopt -v
+ as -o 'plugins/example.cmxs.startup.o' '/tmp/camlstartup2c31a2.s'
+ gcc -shared -o 'plugins/example.cmxs' '-L/opt/ocaml-3.12.1/lib/ocaml' -v 'plugins/example.cmxs.startup.o' 'plugins/example.o'
OCamlbuildのでそれはオプションではありません削除、すべてに-cc
オプションを渡します。 ocamloptのバグのようです。誰も似たような状況を経験しましたかコンパイル時に何かまたはオプションが欠けていますか?
ありがとうございました。
EDIT
私のソリューションは、ここでは再現できないmyocamlbuild.ml
flag ["shared"; "link"]
(S [A"-ccopt";A"-shared"]);
はい、それは私のプラグインに渡されますが、それは必要です。 -ccopt/-cclib w/-sharedを渡すと問題が解決されます。私はccを選ぶ際に、そのコンパイラで共有オプションが利用できないかもしれないと思います。私はocamlbuildで何かを管理できるように見えます。ありがとう。 – nlucaroni
私は分かりません。 cmxsをビルドするときに-cc 'somecc -shared'を渡すか、-ccをまったくパスしないでください。 – ygrek