nm命令可以查看,linux以及windows下的.o ,.obj文件中的符号列表,其中.o文件可以由gcc,g++编译得到,.obj由vc编译得到。太爽了。以后遇到undefined reference错误的时候就可以这个命令搞定了。
举一例子,在下面的源码中调用了一个myprint函数:
#include "lt.h"
int main(void)
{
myprint();
return 0;
}
g++编译后查看.o文件: nm –C test.o
$ nm -C test.o
00000000 b .bss
00000000 d .data
00000000 d .eh_frame
00000000 t .text
U __main
U _imp___Z7myprintv
00000000 T main
可见编译后实际要调用的函数是_imp___Z7myprintv, 这是一个dll调用,如果在dll中编译得到的不是这个名字,就会产生undefined reference错误了。