1

したがって、一般的に、私はこのエラーが何を意味するかを知っています。しかし、ここに私の問題に固有のものがあります-

  1. リンカーが見つけられないシンボルを含む (静的) ライブラリがあります。これを確認するために「nm」を実行し、x86_64 シンボルを明示的に探しました。彼らはそこにいます。
  2. しかし、同じ場所に同じ名前の動的ライブラリもあります。私の推測では、リンカーは .a ではなく .dylib を取得しているため、必要なシンボルを見つけることができません。

同じ名前の静的ライブラリと動的ライブラリがある場合の静的リンクの強制に関するこの投稿を見つけました - How can I force linking with a static library when a shared library of a shared library of the same name is present .

問題は、私は Ant ビルド スクリプトを使用しており、上記の投稿にソリューションを組み込むためにいくつかの異なることを試みましたが、あまり成功しませんでした。

だから私の質問は -

  1. 上記の#2で、ライブラリ名に起因する「ミス」で私の予感は正しいですか?
  2. これに対するAntスクリプトソリューションを知っている人はいますか? Ant で試したことのいくつかは次のとおり
    です。"linkerarg value="static"" <- これの問題は、crt0.o の静的ライブラリを見つけようとすること
    です。「linkerarg value="static"」の後に「linkerarg value="llibname"」が続く

更新- リンカが .a の代わりに .dylib を選択することについては正しかった - スタティック ライブラリ (.a) の名前を別のものに変更し、必要なすべてのシンボルを見つけることができるようにしました。問題は、.dylib ではなく .a を取得するように Ant スクリプトに明示的に指示するにはどうすればよいかということです。

ANSWER - force_loadと呼ばれるリンカーフラグです。したがって、 -force_load filename.a で実行できます。

4

1 に答える 1