SLAM静态编译中动态链接库问题
0. 简介
作为ubuntu的使用者,最难过的事情就是环境的依赖和配置,其中最繁琐的就是各种动态链接库的配置。尤其是在跑ROS-SLAM等比较大的环境时候,我们会发现按照教程经常会出现安装了这个库但是在编译时爆出缺库等问题,而这些问题一般很难或者说无从查起。这种问题一般是动态链接库连接的问题,博主在经过不断地学习过后,逐渐总结了一些学习使用的技巧。这里就给各位和我拥有同样烦恼的各位读者来列举并学习一下。希望这个博客能给各位这这方面存在困扰的同学提供一些帮助。值得一提的是,我们在尝试着通过静态编译方法将SLAM算法塞到嵌入式开发板中的时候,这部分操作的学习是至关重要的。
1. ln -s xxx.so
ln的链接分软链接和硬链接两种:
- 软链接就是:“ln –s 源文件 目标文件”,只会在选定的位置上生成一个文件的镜像,不会占用磁盘空间,类似与windows的快捷方式。
- 硬链接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
有创建就有删除,删除软连接的指令是
rm -rf symbolic_name #注意不是rm -rf symbolic_name/
软链接
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来全局设置动态链接库位置
…详情请参照古月居
SLAM静态编译中动态链接库问题相关推荐
- 【转】gcc 编译使用动态链接库和静态链接库
1 库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 有 ...
- GCC 编译使用动态链接库和静态链接库
1 库的分类 根据链接时期的不同,库又有静态库和动态库之分.静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行.有别于 ...
- Redhat Enterprise 4.3中静态编译perf
注:编译中使用的perf源码和内核版本并不是标准版中的源码,是我们内部的一个版本.这篇文章主要是提供一些思路,在你的环境中编译遇到的问题可能和我这里的不同,源文件或者Makefile文件的内容也会不一 ...
- linux gcc 静态编译,GCC 程序编译的静态链接和动态链接
(给Linux爱好者加星标,提升Linux技能)转自:Mr_Bluyee 在链接阶段中,所有对应于源文件的 .o 文件.'-l' 选项指定的库文件.无法识别的文件名(包括指定的.o目标文件和.a库文件 ...
- Visual C++中动态链接库技术浅谈
摘要:本文比较了Visual C++所支持的三种动态链接库,列出了各自不同的特点和应用场合,详细地描述了三种动态链接库的建立和调用的方法. 关键字:动态链接库:导出函数:调用 引言 较大的应用程序都由 ...
- 动态编译和静态编译及Java执行
静态编译就是在编译的时候把你所有的模块都编译进exe里去,当你启动这个exe的时候所有模块都加载进来了.你写小程序没问题,但程序一大,加载的过程(就是当你运行程序时初始化的过程)就比较费力了..大多数 ...
- MFC的使用——在共享DLL中使用MFC、在静态库中使用MFC
前言 我们在使用Microsoft Visual Studio软件(也就是我们常常说的VS)时,其中项目属性中有一项叫做"MFC的使用",里面包含有不同的设置,会影响我们所编写的程 ...
- VC的静态链接库 动态链接库
1.什么是静态连接库,什么是动态链接库 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了. ...
- Qt最新版5.14在Windows环境静态编译安装和部署的完整过程 VS 2019-Qt static link build Windows 32 bit/64 bit
文章目录 为什么要静态编译(static link) 1.源码下载/source code download 2. 编译工具下载/compiler download 编译环境选择:MinGW/MSVC ...
最新文章
- 虚拟打印机开发日志(一):使用x64 WIN7编译环境编译的完整步骤
- C# MD5加密解密帮助类
- 女生做产品经理好吗_女生天生就是产品经理,不服来战!
- 超炫彩光效数码产品线条感海报PSD分层模板,炫亮抓你眼球
- ubuntu自带截图工具
- 【论文笔记】HyperFace: ADeep Multi-task Learning Framework for Face Detection
- 阶段3 2.Spring_10.Spring中事务控制_3 作业-基于注解的AOP实现事务控制及问题分析_下...
- plist中数据存取
- 最强面试题整理第三弹:Python 后台开发面试题(附答案)
- SLAM和SFM有什么区别?
- 论文排版一步搞定之公式——(公式居中,编号居右)
- 奥拉星插件flash下载手机版下载安装_flash控件手机版
- 配置Docker镜像加速器
- 微信公众平台数据统计
- 七款HTML在线编辑器[下载]
- c语言switch逻辑用语,第一章 第二节用逻辑用语.doc
- 技术知识库——C1见习能力认证(应用软件开发的基础知识)
- 接口测试-公司内部培训资料
- ZF均衡和ML均衡在不同天线数量下的MIMO系统误码率matlab仿真
- Vue-draggable 实现页面模板自动化
热门文章
- css3 animation 实现帧动画
- 自己动手写油猴脚本 - 简单优化微信读书网页版阅读体验
- 三、Android系统内核编译及刷机实战 (修改反调试标志位)
- windows安装sonarqube7.4+sonar-scanner-cli【JDK8+MySQL】
- 模板方法模式---榨汁机
- 什么学习软件需要身份证验证_什么是两层身份验证,为什么我需要它?
- 第十一课:磁场和洛伦兹力
- Broccoli Tree Creator 使用说明 3_3、Girth Transform Node (周长变换节点)
- 常见的 App 安全问题
- 爬取QQ音乐中一首歌的相关信息及评论(破解反爬虫、多协程队列爬虫)