ubuntu安装anaconda之后之前catkin build编译通过的包现在编译报错了

本人在ubuntu20.04上安装anaconda之后,之前能够编译通过的包现在编译反而报错,报错信息简要如下,后面信息还有很长,就只提取了关键的地方:

Errors << ocs2_legged_robot_ros:make /home/wan/six_legged/logs/ocs2_legged_robot_ros/build.make.001.log /usr/bin/ld: /home/wan/anaconda3/lib/libboost_log.so.1.82.0: undefined reference to std::__throw_bad_array_new_length()@GLIBCXX_3.4.29' /usr/bin/ld: /home/wan/anaconda3/lib/libboost_log.so.1.82.0: undefined reference to 

********

 这里表示anaconda下面的boost库与系统的编译器存在冲突,不兼容。发现自己现在是在anaconda 的base环境下编译的,终端输入

conda deactivate

退出anaconda环境下之后这个报错信息仍然存在(这里建议cpp的包都不要在虚拟环境下编译,否则容易出现很多不兼容的问题),这个表示系统调用boost库仍然还是调用的是anaconda 的,查看在安装anaconda之前编译好的包,**/build/**/CMakeCache.txt文件下boost调用的路径如下:

Boost_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0

Boost_FILESYSTEM_LIBRARY_RELEASE:STRING=/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0

 可以发现两个boost库的版本并不一样,所以现在需要将编译使用到的boost库由anaconda更换为/usr/lib/的。于是可以在catkin build之前在终端输入以下指令:

export LD_LIBRARY_PATH=$(echo $LD_LIBRARY_PATH | sed -e 's|/home/wan/anaconda3/lib:||g')
export CMAKE_PREFIX_PATH=$(echo $CMAKE_PREFIX_PATH | sed -e 's|/home/wan/anaconda3:||g')
export BOOST_ROOT=/usr
export BOOST_INCLUDEDIR=/usr/include
export BOOST_LIBRARYDIR=/usr/lib/x86_64-linux-gnu

gpt自动生成的,不知道这个指令有没有冗余的,如果想要永久生成,就可以在~/.bashrc文件最下面添加上面的指令,最后再即可

source ~/.bashrc

以上只是给大家提供了一个解决类似问题的思路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值