ライブラリがリンカに追加される順番に問題があります。以前ocamlbuildによって構築されたライブラリは、flag
ルールに含まれるライブラリのリストの後にリンクされています。そして、私はmyocamlbuild.ml
でもこのタイプの依存関係を定義する方法は見当たりません。ocamlbuildのリンクライブラリの順
具体的には、ライブラリ自体(z
)が必要な以前に構築されたライブラリ(gzcaml
)とのリンクが問題になります。 gccの新しいバージョンでは厳密さが増したので、-lz
という引数はlibgzcaml.a
の後に現れなければなりません。
私はすべてのこれらのライブラリを含めて、process
が適切に、ライブラリを交互にしてA"-cclib"
リストを作成
flag ["ocaml"; "link"]
(S (process "-cclib" clibs))
ています。
また、追加のライブラリが追加されています(冗長出力の-lm
と-ldl
)が、これらを変更/追加することはできません。 (これは即座に私の問題を解決する)。
私のmyocamlbuild.ml
は、それ以外の場合は私がここに含めておきます。上記のコードを、After_rules
の一番下まで移動してみました。そしてそれは順序を変更しますが、ocamlbuildが以前に作成したビルドライブラリ(cなど)の後には決してありません。以下は
EDIT は、私は上記の問題を解決するために、私のconfigureスクリプトとocamlbuildで使用したコードスニペットです。乾杯! myocamlbuild.ml.in
if @[email protected] then
flag ["ocaml"; "link"]
(S [A"-cclib";A"-Wl,--no-as-needed"]);
ありがとうございました。問題のある人は、これらのフラグがすべてのライブラリの前にあることを確認してください。 – nlucaroni
http://caml.inria.fr/mantis/view.php?id=5441 – ygrek