4

最近、テストバイナリを入手しました。objdumpを使用して確認したところ、ハードコードされたライブラリパスが含まれていることがわかりました。そのようなパスをハードコーディングする必要があるのはなぜですか?代わりに、SHELL環境変数または-Lパラメーターからパスを取得するべきではありませんか?

objdump -p testprog

出力には、共有ライブラリへのハードコードされたパスが含まれます。

....
  NEEDED      /home/test/lib/liba.so
  NEEDED      /home/test/lib/libb.so
  NEEDED      /home/test/lib/libc.so
....
4

1 に答える 1

5

これはおそらく.so、テスト プログラムがビルドされたホストにこれら 3 つのファイルの SONAME がなかったことが原因です。それを構築liba.soした人-Wl,soname,liba.soに、他の 2 つについても同様に再構築するよう伝えてから、メイン プログラムを再リンクします。

于 2012-07-03T07:21:07.097 に答える