如何查看.o文件中的符号? nm对我不起作用。我用g ++ / linux。
答案 0 :(得分:76)
您可以使用强大的nm
代替objdump
。有关详细信息,请参见手册页。试试objdump -t myfile
或objdump -T myfile
。使用-C
标志,您还可以解析C ++名称,例如nm
。
答案 1 :(得分:11)
您是否曾在其他平台上使用交叉编译器?如果是,则需要使用相应的nm
或objdump
命令。
例如,如果您使用XXX-YYY-gcc
编译.o文件,则需要使用XXX-YYY-nm
或XXX-YYY-objdump
来处理文件。
答案 2 :(得分:5)
有一个命令可以查看目标文件或库或可执行文件中包含哪些函数:
nm
答案 3 :(得分:5)
只需运行:nm you_obj_file.o | c++filt
答案 4 :(得分:1)
您可以使用 writeToFile()
,例如:
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