look up error: undefined symbol:......解决过程
今天遇到个很郁闷的问题,运行程序时报错:look up error: undefined symbol:...
首先运行时报错找不到,一般就是动态库里没有这个符号。所以我用 nm命令 并用管道结合grep命令(nm .so | grep 'pattern') 查找了下那个未定义符号。结果发现,动态库里有这个符号,这里T表示是在代码段。
然后我怀疑可能加载的不是这个库,可能是老版本的库,于是我又用 ldd 命令执行可执行文件,查看运行时程序加载了哪些库,(这里也可以用管道+grep),结果发现加载的还就是最新的库!
简直了!到底什么原因呢!
待续。。。
==============================================
找到原因,就是那个动态库没链接上!但是我用 ldd 命令明明可以查看到链上了这个库。。。。。简直了!就是cmake_current_binary_dir这个内置变量手残打错了!导致库没链上,cmake_current_binary_dir指的就是cmake的执行目录,及makefile所在目录(build目录)
还需继续深究。。。。。ldd 命令