ubuntu20 下编译16下的链接错误和解决过程经验总结

2021/11/6 7:10:24

本文主要是介绍ubuntu20 下编译16下的链接错误和解决过程经验总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

工作项目。本来知道标准的推荐工作环境是ubuntu16,知道有个同事因为驱动的原因装的是20版本,也能work。我恰好问领导借的U盘是utuntu20版本,于是也安装的的20版本。其实是失策的。因为git库有些.so是在16下编译出来的,而且我拿不到源码。如果全部是源码,倒是可以尝试用20版本。

/usr/bin/ld: ../../../baidu-mapauto-engine/src/engine/dr/mk/lib/opencv/ubuntu/libopencv_imgproc.so: .dynsym local symbol at index 2 (>= sh_info of 2)
/usr/bin/ld: ../../../baidu-mapauto-engine/src/engine/dr/mk/lib/opencv/ubuntu/libopencv_imgproc.so: .dynsym local symbol at index 3 (>= sh_info of 2)

解决这个错误,参考了https://blog.csdn.net/wd1603926823/article/details/108245043。

在某个cmake文件中的链接选项加了,-fuse-ld=gold

另外我的/usr/bin/ld 指向  /usr/bin/ld.gold。但这仅仅是解决了编译错误。还有运行错误。使用ldd和lddtree工具,来看编译出来的guide_test依赖什么库,分别把路径加入到LD_LIBRARY_PATH中。发现系统同时需要libcrypto.so的两个版本。于是从ubuntu16上拷贝了老版本,libcrypto.so.1.0.0,放到/usr/local/lib下。

 



这篇关于ubuntu20 下编译16下的链接错误和解决过程经验总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程