编译链接程序的时候出现”undefined reference to”问题会比较头疼,这篇文章总结下出现这个问题的原因和解决方法。出现这个问题的根本原因是某个目标程序在链接的时候找不到外部引用符号的定义处。所以,可以从下面几个步骤确认问题。
1、makefile是否制定链接了对应的库文件(定义了外部引用符号)
2、makefile是否缺失了相关目标文件(定义了外部引用的符号)
3、多个库文件的链接顺序是否正确。链接多库时,多个库之间如果有依赖,需要注意书写的顺序,右边是左边的前提(前提放在后面);
4、不同库make规则不同,导致函数的命名方式不一样。(通过nm命令查看具体的函数命名)
ldd:用来查看程序运行所需的共享库,常用来解决程序因缺少某个库文件而不能运行的一些问题。
nm:目标文件格式分析。