93

如何查看 .o 文件中的符号?nm 对我不起作用。我使用 g++/linux。

4

5 回答 5

114

取而代之的是nm,你可以使用强大的objdump。有关详细信息,请参见手册页。尝试objdump -t myfileobjdump -T myfile。使用该-C标志,您还可以像这样对 C++ 名称进行分解nm

于 2010-10-07T11:05:25.310 回答
15

您是否一直在为另一个平台使用交叉编译器?如果是这样,您需要使用相应的nm或命令objdump

例如,如果您曾经XXX-YYY-gcc编译过 .o 文件,则需要使用XXX-YYY-nmXXX-YYY-objdump处理这些文件。

于 2010-10-07T11:35:06.547 回答
6

有一个命令可以查看目标文件或库或可执行文件中包含哪些函数:

nm
于 2010-10-07T10:58:06.787 回答
6

赶紧跑: nm you_obj_file.o | c++filt

于 2016-12-30T02:20:06.243 回答
2

您可以使用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);
}
于 2018-09-29T01:59:29.610 回答