.oファイル内のシンボルを表示するにはどうすればよいですか? nmは私には機能しません。私はg ++/linuxを使用しています。
nm
の代わりに、強力なobjdump
を使用できます。詳細については、manページを参照してください。 objdump -t myfile
またはobjdump -T myfile
。とともに -C
フラグは、nm
のように、C++の名前を解読することもできます。
別のプラットフォームでクロスコンパイラを使用していますか?その場合、それぞれのnm
またはobjdump
コマンドを使用する必要があります。
たとえば、XXX-YYY-gcc
を使用して.oファイルをコンパイルした場合、XXX-YYY-nm
またはXXX-YYY-objdump
を使用してファイルを処理する必要があります。
ただ走れ: nm you_obj_file.o | c++filt
オブジェクトファイル、ライブラリ、または実行可能ファイルに含まれる関数を確認するコマンドがあります。
nm
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);
}