ros pluginlib 段错误
最近在重新回看ROS插件时,运行出现了段错误,发现是boost版本问题,我目前版本是1.66,应该调整至1.58版本,如果跟其他软件使用不同的boost版本时,可以把相应版本编译到本地,不install到根目录,在链接库文件和找头文件时,可以指定目录寻找,即可!
安装两个版本。
我这里考虑bitshares源码采用1.60,eos版本采用1.67,步骤如下:
一、先去下载 tar.gz文件 https://www.boost.org/users/history/,分别下载boost_1_60_0.tar.gz和boost_1_67_0.tar.gz
二、安装boost1.60,终端执行如下指令
> tar -zxvf boost_1_60_0.tar.gz && cd boost_1_60_0
> su - root
> ./boottrap.sh --with-libraries=all
> ./b2
> ./b2 install
#我编译bitshare项目多一点,就使用./b2 install 把boost1.60安装在默认路径了,即/usr/local下,头文件和库文件分别位于/usr/local/include和/usr/local/lib中。
三、安装boost1.67, 解压和编译源码还是跟上边一样,但是最后./b2 install指令跟上prefix 参数,指定安装路径:
...
mkdir /usr/local/opt/boost1.67
./b2 install --prefix=/usr/local/opt/boost1.67
这样安装完后头文件和lib文件就分别位于/usr/local/opt/boost1.67下的include和lib文件下
安装就完成了
四、为项目指定boost库
bitshares和eos源码使用cmakelist组织,其通过FIND_PACKAGE(Boost ...)指令来搜索boost所在的目录,如果不加以设置的话都会默认搜索到/usr/local/下的boost1.60版本,因为bitshare用boost1.60是ok的,这里需要设置的是eos项目,方法如下:
1.如果采用终端cmake指令编译,则加上-D参数:
cd <eos_code_root>
cmake -DBOOST_ROOT=/usr/local/opt/boost1.67 .
2.如果采用ide,就需要在ide中设置环境变量,比如我用的是clion:
clion->preferences->Build,Execution,Deployment->Cmake->environment,添加BOOST_ROOT=/usr/local/opt/boost1.67
但是clion设置环境变量需要一定的反应时间,设置好后最好重启一下clion,如果还是检索出来别的版本,就再耐心等一下。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2018-01-14 XML命名空间
2017-01-14 第3章 编写ROS程序-3
2017-01-14 第3章 编写ROS程序-2
2017-01-14 第3章 编写ROS程序-1
2017-01-14 1、第二章中的概念
2016-01-14 2.4 基本的输入/输出操作
2016-01-14 2、C++