linux平台开发问题个人总结. 持续更新帖~

来源:互联网 发布:网络打鱼赌博游戏解密 编辑:程序博客网 时间:2024/05/15 22:15

1. 如果编译连接都通过了, 可是运行时却找不到函数符号了.

错误信息: ./a.out: symbol lookup error: ./a.out: undefined symbol: xxx()

错误原因: 请注意你的目标文件是否存在多份? 比如程序所在目录有个xxx.so库, 系统目录/usr/local/lib里也有一份. 可是现在程序目录下的改变了一个函数, 编译连接时makefile里指定的是程序目录, 因此可以编译链接通过, 但实际执行的时候会优先去系统目录里找, 这时候找的是系统目录里旧的.so, 因此找不到符号了. 

建议: 确认目标文件是否存在多份? 是否在优先搜索的系统目录里有旧的备份? 也看看LD_LIBRARY_PATH环境变量.