2017-02-21 44 views
1

デフォルトパス(RPATH)で検索する代わりに、ライブラリの絶対パスを使用するようにELFファイルを作成する必要があります。ELFファイルの共有ライブラリの絶対パス

これはreadelfがからの結果である:

readelf -d example 

Dynamic section at offset 0xe28 contains 24 entries: 
Tag  Type       Name/Value 
0x0000000000000001 (NEEDED)    Shared library: [libc.so.6] 

しかし、私はこのような何かを取得したい:

readelf -d example 

Dynamic section at offset 0xe28 contains 24 entries: 
Tag  Type       Name/Value 
0x0000000000000001 (NEEDED)    Shared library: [/lib/libc.so.6] 

はこれを達成するための任意のリンカーのオプションがありますか?

+0

[lddとobjdumpの違いは何ですか?](http://stackoverflow.com/questions/11524820/what-is-the-difference-between-ldd-and-objdump) – yugr

答えて

-1

これらの絶対パスはELFファイルの一部ではなく、ダイナミックローダによって決定されるため、ツールはlddです。 lddは、環境変数を囲むラッパーで、ダイナミックローダがロードされる(または見た目に応じて)ライブラリへのパスを出力します。

もちろん、ライブラリの解像度はシステム固有のタスクであり、結果は同じディストリビューションであってもインストールごとに異なる場合があります。

+0

可能性がありますそれを正当化するために? DT_NEEDEDは、ライブラリをどこに見つけるかを指示するために使用されます。上のreadelfの出力ではファイルに絶対パスはなく、文字列 "libc.so.6"があります。これは動的ローダですそれをロードする。私はELFについて10年間書いていないのではない... https://blog.flameeyes.eu/tags/elf/ –

+0

実際に絶対パスを 'DT_NEEDED'に保存することができるかどうか尋ねる。 –

+0

それは私が質問を読む方法ではありません。たぶん私はそれを誤解したでしょう。私のコメントは、そのコメントがどこに行ったかわからない、私に言ってくれた人に返答していたことに注意してください。 –

関連する問題