LSB AppCheckerで共有オブジェクト(.so)の移植性をチェックしています。
報告されている問題の1つは、使用されていないが、とにかくリンクされている1つの外部ライブラリ(libm.so.6)があることです。LSB AppChecker:未使用ライブラリとのGCCリンク
GCCがこの不要なライブラリにリンクしないようにするにはどうすればよいですか?
EDIT:
私の共有オブジェクトに対してlddコマンドの出力は次のとおりです。あなたがあなた自身のリンクコマンドで-lmを指定している場合を除き
linux-gate.so.1 => (0x009ff000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x003dc000)
libm.so.6 => /lib/libm.so.6 (0x00110000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00137000)
libc.so.6 => /lib/libc.so.6 (0x0021d000)
/lib/ld-linux.so.2 (0x0097f000)
少なくともLinuxではg ++は常にリンク行に '-lm'を追加します。問題を示すために明示的な '-lm'は必要ありません。 –
ありがとうございます。今度はAppCheckerはlibm.so.6については不平を言っておらず、readelfでもそれは表示されません。不思議なことは、lddは依然として外部依存としてlibm.so.6を示しているということです。なぜ誰も知っていますか? – GetFree
lddはlibm.so.6の依存関係を示します。libstdC++。so.6はlibm.so.6に依存し、lddは直接的および間接的な依存関係を示します。 「ldd /usr/lib/libstdc++.so.6」または「readelf -d /usr/lib/libstdc++.so.6」を実行すると、リストにlibmが表示されます。 –