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錯誤了。