• SLAM静态编译中动态链接库问题


    0. 简介

    作为ubuntu的使用者,最难过的事情就是环境的依赖和配置,其中最繁琐的就是各种动态链接库的配置。尤其是在跑ROS-SLAM等比较大的环境时候,我们会发现按照教程经常会出现安装了这个库但是在编译时爆出缺库等问题,而这些问题一般很难或者说无从查起。这种问题一般是动态链接库连接的问题,博主在经过不断地学习过后,逐渐总结了一些学习使用的技巧。这里就给各位和我拥有同样烦恼的各位读者来列举并学习一下。希望这个博客能给各位这这方面存在困扰的同学提供一些帮助。值得一提的是,我们在尝试着通过静态编译方法将SLAM算法塞到嵌入式开发板中的时候,这部分操作的学习是至关重要的。

    1. ln -s xxx.so

    ln的链接分软链接和硬链接两种:

    1. 软链接就是:“ln –s 源文件 目标文件”,只会在选定的位置上生成一个文件的镜像,不会占用磁盘空间,类似与windows的快捷方式。
    2. 硬链接ln 源文件 目标文件,没有参数-s, 会在选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
    sudo ln -s  /usr/lib/x86_64-linux-gnu/libboost_iostreams.so.1.65.1 /usr/lib/x86_64-linux-gnu/libboost_iostreams.so.1.57.0 
    
    • 1

    在这里插入图片描述

    有创建就有删除,删除软连接的指令是

    rm -rf symbolic_name #注意不是rm -rf symbolic_name/
    
    • 1

    软链接
    1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式

    2.软链接可以 跨文件系统 ,硬链接不可以

    3.软链接可以对一个不存在的文件名进行链接

    4.软链接可以对目录进行链接

    硬链接
    1.硬链接,以文件副本的形式存在。但不占用实际空间。

    2.不允许给目录创建硬链接

    3.硬链接只有在同一个文件系统中才能创建

    2. ldd

    ldd查询软连接,然后逐层查找讲这些打包即可(或者ls -il一般系统与系统直接需要tar打包传输,否则会丢失软连接)
    在这里插入图片描述

    3. ll -h& ls -l

    动态搜索so的动态软链接
    在这里插入图片描述

    4. LD_LIBRARY_PATH

    通过export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/UDISK/libopencv/将文档路径连接到全局路径下.

    程序编译时候需要动态链接库和头文件,当编译完成后只需要动态链接库,动态链接库可以放在可执行文件下,或者在bashrc中设置export来全局设置动态链接库位置
    在这里插入图片描述

    …详情请参照古月居

  • 相关阅读:
    测试应届生是去自研小公司好还是外包公司好?
    Apache Doris 数据建模之 Aggregate Key 模型
    MySQL数据库高级查询语句及案例
    深入剖析React Hooks中的 useCallback
    自定义tabbar
    Java SE 16 record 类型说明与使用
    java计算机毕业设计手办周边商城源程序+mysql+系统+lw文档+远程调试
    呼叫中心系统信息发送功能的应用
    K-Means(下):数据分析 | 数据挖掘 | 十大算法之一
    初阶牛之牛客网刷题集(1)
  • 原文地址:https://blog.csdn.net/lovely_yoshino/article/details/125607070