1

テスト ライブラリの静的バージョンを使用してソースからビルドしようとしています。私は libtest.a と libtest.so の両方を利用できるので、「-static」オプションを使用しています。ただし、gcc リンカも標準数学ライブラリの静的バージョンを検索しようとしているようです。標準ライブラリの共有バージョンをリンクするために使用できるオプションを教えてください。

g++ -static main.cpp -o a.out -L. -ltest

エラー:

/usr/bin/ld: cannot find -lm
4

2 に答える 2

8

リンカーに特定のライブラリの静的バージョンを強制的に使用させたい場合は:filename、リンカーに「ベース」ライブラリ名を指定して最初に見つかったものを使用させる代わりに、 を使用して特定のライブラリを強制することができます。

g++ main.cpp -o a.out -l:./libtest.a

http://sourceware.org/binutils/docs-2.23.1/ld/Options.htmlから:

-l namespec
--library=namespec

で指定されたアーカイブまたはオブジェクト ファイルnamespecを、リンクするファイルのリストに追加します。このオプションは何度でも使用できます。namespecが の形式の場合 :filename、ld はライブラリ パスで というファイルfilenameを検索します。それ以外の場合は、ライブラリ パスで というファイルを検索しますlibnamespec.a

共有ライブラリをサポートするシステムでは、ld は .xml 以外のファイルも検索する場合がありますlibnamespec.a。具体的には、ELF および SunOS システムでは、 ld は、 という名前のライブラリを検索する libnamespec.so前に、 という名前のライブラリのディレクトリを検索しlibnamespec.aます。(慣例により、拡張子 .so は共有ライブラリを示します。)この動作は:filename、常に というファイルを指定するには適用されないことに注意してくださいfilename

于 2013-01-24T05:07:43.703 に答える