web-dev-qa-db-ja.com

オブジェクトファイル内のシンボルを表示する方法は?

.oファイル内のシンボルを表示するにはどうすればよいですか? nmは私には機能しません。私はg ++/linuxを使用しています。

71
nakiya

nmの代わりに、強力なobjdumpを使用できます。詳細については、manページを参照してください。 objdump -t myfileまたはobjdump -T myfile。とともに -Cフラグは、nmのように、C++の名前を解読することもできます。

85
DarkDust

別のプラットフォームでクロスコンパイラを使用していますか?その場合、それぞれのnmまたはobjdumpコマンドを使用する必要があります。

たとえば、XXX-YYY-gccを使用して.oファイルをコンパイルした場合、XXX-YYY-nmまたはXXX-YYY-objdumpを使用してファイルを処理する必要があります。

12
Schedler

ただ走れ: nm you_obj_file.o | c++filt

5
Jee lee

オブジェクトファイル、ライブラリ、または実行可能ファイルに含まれる関数を確認するコマンドがあります。

nm
5
Alok Save

nm -C .o/lib/exeを使用できます。例:

xiongyu@ubuntu:~/tmp/build$ nm -C libfile1.a 

file1.cpp.o:
0000000000000000 T f()
0000000000000000 W int fun<int>(int)

nm -Cを使用すると読みやすくなりますnmを使用する場合:

xiongyu@ubuntu:~/tmp/build$ nm libfile1.a 

file1.cpp.o:
0000000000000000 T _Z1fv
0000000000000000 W _Z3funIiET_S0_

ご覧のとおり、それほど読みやすいものではありません。

以下は私のfile1.cppが好きなものです:

xiongyu@ubuntu:~/tmp/build$ vi ../file1.cpp 
#include "head.h"
void f()  {
     int i = fun<int>(42);
}
1
Jayhello