FAST-LIVO 代码运行报错及解决方法

目录

一、Sophus安装编译问题

二、对'Sophus::SE3::xxx'未定义的引用

三、报错xxx@GLIBCXX_3.4.30

四、运行时程序崩溃


一、Sophus安装编译问题

要求安装非模板类的Sophus库,也就是要回滚到a621ff版本,在安装过程中,使用Cmake ..的时候能够顺利通过,接着执行make命令的时候就会卡在5%,报错:

Sophus/sophus/so2.cpp:32:26: error: lvalue required as left operand of assignment 
  unit_complex_.real() = 1.;

解决方案:

二、对'Sophus::SE3::xxx'未定义的引用

 ​​​​报错:

解决方法:

在rpg_vikit/vikit_common的CmakeLists.txt里添加SET(Sophus_LIBRARIES libSophus.so) 

参考链接(不知道这一步是否必要):编译报错undefined reference to `Sophus::SE3::operator*(Eigen::Matrix<double, 3, 1, 0, 3, 1> const&) 解决方法_undefined reference to `sophus::se3::se3()-CSDN博客

三、报错xxx@GLIBCXX_3.4.30

错误信息libicuu.so.73 文件中未定义对 std::condition_variable::wait(std::unique_lock<std::mutex>&)@GLIBCXX_3.4.30 的引用。这表明系统可能使用了不兼容的 GCC 或 libstdc++ 版本。 

解决办法:

1. 检查 GCC 版本:

gcc --version

2. 检查是否支持 GLIBCXX_3.4.30:

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

注意,路径 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 可能会根据系统有所不同。可以使用 locate libstdc++.so.6find /usr -name libstdc++.so.6 来找到正确的路径。

运行上述命令后,会显示 libstdc++.so 支持的所有 GLIBCXX 版本。如果列表中包含 GLIBCXX_3.4.30,则说明 GCC 版本支持该版本。如果没有,则需要更新 GCC 或 libstdc++

3. 更新GCC版本

sudo apt-get install gcc-11 g++-11

GCC 的安装会附带更新的 libstdc++ 库,可以通过以下命令查看安装后的库是否包含 GLIBCXX_3.4.30

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

切换默认的 GCC 版本

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100

验证是否已成功配置

gcc --version
g++ --version

看起来系统中虽然已经安装了 g++-11,但当前 g++ 命令无法识别。这可能是因为 g++ 没有正确地链接到 g++-11,或者 PATH 环境变量没有包含 g++ 所在的目录。

可以手动创建一个符号链接,将 g++ 指向 g++-11

sudo ln -s /usr/bin/g++-11 /usr/bin/g++

再次使用g++ --version验证,成功

四、运行时程序崩溃

【FAST-LIVO】1.0 FAST-LIVO编译以及运行程序时崩溃的解决办法_哔哩哔哩_bilibili

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值