PCL源码编译安装出现Boost库报错问题:error: boost/detail/endian.hpp: No such file or directory

error: boost/detail/endian.hpp: No such file or directory 43 | #include <boost/detail/endian.hpp>

        这个错误是因为 PCL 1.8 依赖的 Boost 库版本较旧,而系统中安装的 Boost 版本较新,导致 boost/detail/endian.hpp 文件缺失。在较新的 Boost 版本中,endian.hpp 文件已经被移动到 boost/endian/ 目录下。

1、检查 Boost 版本

  • 确认你系统中安装的 Boost 版本:
dpkg -s libboost-dev | grep Version
#或者
cat /usr/include/boost/version.hpp | grep BOOST_LIB_VERSION

        如果 Boost 版本较新(例如 1.74 或更高),则需要调整 PCL 1.8 的代码以兼容新版本的 Boost。 

  • 查找包含boost/detail/endian.hpp的文件
grep -r "boost/detail/endian.hpp" /path/to/

        查找源码中所有包含 boost/detail/endian.hpp 的文件,并将其替换为 boost/endian.hpp。修改后make依然会出现其它错误,如果其它项目出现类似问题按照这种方式修改没什么问题但此处建议降低Boost版本或者升高PCL版本

2、安装旧版 Boost

        如果你不想修改 PCL 1.8 的源码,可以安装与 PCL 1.8 兼容的旧版 Boost(例如 Boost 1.65 或更低版本)。

  • 卸载当前安装的 Boost: 
  • sudo apt-get remove libboost-dev libboost-all-dev
  • 下载并安装旧版 Boost:

        从 Boost 官网下载旧版本源码:https://www.boost.org/users/history/

        解压并编译安装:

  • tar -xzf boost_1_65_0.tar.gz
    cd boost_1_65_0
    ./bootstrap.sh
    ./b2
    sudo ./b2 install
  • 确保系统使用正确版本的 Boost: 
  • sudo ldconfig

3、总结

  • 不修改源码,建议安装旧版 Boost(如 1.65 或更低版本)。

  • 修改源码,可以直接替换 boost/detail/endian.hpp 为 boost/endian.hpp,然后重新编译,但会出现其它版本相关的问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值