2

libXX.soヘッダーYYY.hから関数などが含まれているファイルを見つけるためのマニュアルや方法はありますか?

例えば:

関数foofunk()を含むヘッダーfoo.hを含めます。しかし、リンカはfoofunk()への未定義の参照を言います。

ノート:

ビルドとリンクのプロセスにMakefileを使用したいと思います。(GCC)そして私の情報源はCですが、それは重要ではないはずです。

4

1 に答える 1

5

objdumpを使用します。

objdump -T library.so | grep ' Base ' | grep ' function_name$'

次に、特定の関数を定義していると思われる共有ライブラリをループし、objdumpを使用して各ライブラリを確認します。

for f in /usr/lib/lib*.so; do \
  objdump -T $f | grep ' Base ' | grep -q ' function_name$' && echo $f && break
done

break探しているライブラリが見つかったにもかかわらず検索を続行する場合は、削除してください。

静的ライブラリの場合は、の1つに置き換え-Tて削除します。-tgrep

objdump -t library.a | grep ' function_name$'
于 2012-10-12T10:31:07.410 に答える