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下。
标签:bin,engine,ld,..,16,so,usr,ubuntu20,经验总结 来源: https://www.cnblogs.com/tangxiaosheng/p/15514997.html