GCC编译出来的object(目标文件)getPon.o,在链接时(ld)报了一个错误说找不到一个函数(undefined reference to identifier devCtl_getEtherLanHostStatus),可是在源代码明明是有这一个函数。只不过被"#ifdef "宏个括起来了,最可能的原因就是这个宏没有开,函数没有被编译进去。怎样确认这一点哪?
就用上readelf命令了,Linux下的可执行文件格式是"ELF32"或者是"ELF64",就像"readelf"名字所暗示的那样,"readelf"可以读取ELF文件的信息,更详细的用法"man readelf"查阅MAN手册可以知道.
readelf -s getPon.o
显示目标文件中所有的Symbol,可是如果定义的函数名太长的话,'readelf -s'显示symbol名字时会被截断。想要显示symbol名字不被截断,可以换用'nm’或'objdump’命令
nm getPon.o
objdump -t getPon.o