undefined symbol

今天调试一个程序,需要调用其他模块的函数,代码就20行左右,编译也通过了,当放到机器上跑的时候,发生了crash,主要的原因是 **.so:undefined symbol: _ZN2wf7deta*(用*代替这个symbol),开始的时候用linux命令nm **.so这个so文件,也找到的这个T _ZN2wf7deta*,但是前面有个大T,查了一下,T一般:Text段的符号。子程序都是这种符号,比如文件中实现了一个函数function,则function就是这种符号,又用命令 ldd **.so查询了库的依赖,发现依赖里面确实没有调用的模块,最后在CMakeLists.txt里加入了调用的模块,之后就不crash了。虽然解决了,但是还是有点疑问:

  1. 为什么编译的时候没有报错
  2. nm是可以查询出来前面是大U _**的symbol一般是undefined symbol,可是为什么查出来的是symbol前面是大T

希望CSDN上的大神们能帮忙回答一下!多谢了

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页