web-dev-qa-db-ja.com

18.04 x86_64のaptから静的ライブラリをインストールすることはできますか?

バイナリ分散静的ライブラリに依存するプロジェクトを構築しようとしています。

リンカは、特に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でも入手する方法はありますか?

1
stamm

すべてのパッケージは、静的ライブラリをインストールするようです。それらは/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回しかチェックされないことに注意してください。いくつかのシンボルがまだ見つからない場合は、パラメーターの順序を変更する必要があります。

1
stamm