バイナリ分散静的ライブラリに依存するプロジェクトを構築しようとしています。
リンカは、特にini_config
関数が見つからないと文句を言います。
config_params.c:(.text+0x16f): undefined reference to `ini_get_config_valueobj'
動的ライブラリは検出されますが、静的バージョンは検出されません。
attempt to open /usr/lib/gcc/x86_64-linux-gnu/7/libini_config.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libini_config.so succeeded
これらのファイルは、debian stretchに存在します。それらをubuntuでも入手する方法はありますか?
すべてのパッケージは、静的ライブラリをインストールするようです。それらは/usr/lib/x86_64-linux-gnu/
にあります。
どうやら、リンカは-lsomelib
を使用するときに最初に動的ライブラリを選択します。それを上書きするには、-l:libsomelib.a
を使用します。そうすると、正確なファイル名somelib.a
にのみ一致します。 -L/usr/lib/x86_64-linux-gnu
は、動的ライブラリの「リンク」と同じ方法で使用します。
ライブラリ検索フェーズをデバッグするには、-Wl,--versbose
をLDFLAGSに追加します。gccは、-lXXX
オプションに対して試行するすべてのパスを表示します。
この回答 に記載されているように、アーカイブは1回しかチェックされないことに注意してください。いくつかのシンボルがまだ見つからない場合は、パラメーターの順序を変更する必要があります。