• 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下。

     最难搞定的一个错误,是undefined symbol, ....., Qt_5 version,上网多方查找,似乎是和QT有关,但是用挺老的gcc版本编译出来的。我尝试过换用不同的gcc编译器,发现

    g++11太新,对有些标准已经不支持了。运行ubuntu16的同事用的编译器是g++5.4.版本,我打算用apt来安装g++-5,发现ubuntu20下根本无法安装
    g++-4, g++-6都没法安装。最后我是把/opt/Qt5.12.5/5.12.5/gcc_64/lib 放在最前面才解决的。

  • 相关阅读:
    npm升级package.json依赖包到最新版本号
    vue中 父子组件的通讯
    vue组件开发
    vue模拟后端获取数据——json-server与express
    vue-cli 2.x 搭建项目
    python socket编程
    python异常处理
    python反射
    python特殊成员函数
    Executor ExecutorService Executors
  • 原文地址:https://www.cnblogs.com/tangxiaosheng/p/15514997.html
Copyright © 2020-2023  润新知