4

多数の共有オブジェクトに動的にリンクされている実行可能ファイルがあります。(実行可能ファイルにインポートされた)シンボルがどれに属しているかをどのように判断できますか?

複数の可能性がある場合、ldをシミュレーションして、どこから取得されているかを確認できますか?

4

4 に答える 4

5

nm(1)objdump(1)elfdump(1)を見てください。

于 2008-12-01T17:59:14.680 に答える
5

チャーリーが言及したものと同様に、「ldd」はあなたが探していることのいくつかを行うかもしれません.

于 2008-12-01T18:03:38.273 に答える
3

実行可能ファイルを再リンクできる場合、参照と定義がどこから来ているかを見つける最も簡単な方法は、ld -yフラグを使用することです。例えば:

$ cat t.c
int main() { printf("Hello\n"); return 0; } 

$ gcc t.c -Wl,-yprintf 
/lib/libc.so.6: definition of printf

実行可能ファイルを再リンクできない場合は、実行可能ファイルで実行lddしてから、'nm -D'リストされているすべてのライブラリで、grep目的のシンボルに対して順番に実行します。

于 2008-12-04T07:38:19.423 に答える
1
$LD_DEBUG=bindings my_program

これにより、すべてのシンボル バインディングがコンソールに出力されます。

于 2009-02-17T06:13:56.547 に答える