error while loading shared libraries:libboost_system.so.1.46.1:cannot open shared object file

本文记录了在Ubuntu 14.04环境下使用PCL 1.8进行SLAM研究过程中遇到的Boost库版本不匹配错误。详细介绍了如何通过手动编译安装特定版本的Boost库来解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在跟着半闲居士学习slam,遇到了一些问题。


首先,说明我的开发环境:ubuntu14.04 64位, pcl1.8


在运行partIII时,出现了如下报错:error while loading shared libraries: libboost_system.so.1.46.1:cannot open shared object file:No such file or directory


我先尝试apt-get install libboost-all-dev,但是安装好之后仍然未解决该问题, 于是,我下载了libboost1.46.1的源码进行安装,过程如下:

tar -zxf libboost_1_46_1.tar.gz

cd libboost_1_46_1

sudo ./bootstrap.sh  执行完后会生成一个bjam的可执行文件

sudo ./bjam 时间较长

发现仍然不行,于是我查找了libboost_1_46_1文件夹下是否有libboost_system.so.1.46.1,幸运的是我找到了, 

然后cp stage/lib/libboost_system.so.1.46.1 /usr/lib/x86_64-linux-gun/libboost_system.so.1.46.1

发现该文件带有x属性,所以sudo chmod -x /usr/lib/x86_64-linux-gun/libboost_system.so.1.46.1

然后程序顺利通过



### 如何解决 `error while loading shared libraries: libboost_log.so.1.74.0` 的问题 当遇到此类错误时,通常是因为系统中缺失所需的 Boost 库文件或者动态链接器无法找到该库文件的位置。以下是解决问题的方法: #### 方法一:安装缺失的库文件 如果系统的软件包管理工具支持安装特定版本的 Boost 库,则可以通过以下命令来安装所需版本的 `libboost_log`。 对于基于 Debian 的系统(如 Ubuntu),可以运行以下命令: ```bash sudo apt-get update sudo apt-get install libboost-log1.74-dev ``` 对于基于 Red Hat 的系统(如 CentOS 或 Fedora),可以尝试以下命令: ```bash sudo yum install boost-devel # 如果需要指定版本,可能需要启用额外的仓库或手动编译。 ``` 此方法适用于目标操作系统已经提供预编译好的对应版本的 Boost 库的情况[^1]。 --- #### 方法二:手动下载并编译 Boost 库 如果官方源未提供所需的 Boost 版本,可以选择从官网下载对应的 Boost 源码并自行编译。 1. 下载 Boost 1.74.0 源码压缩包: 官方网站地址为 https://www.boost.org/users/download/。 2. 编译并安装 Boost: ```bash ./bootstrap.sh --prefix=/usr/local ./b2 install ``` 3. 验证安装路径是否正确: 默认情况下,Boost 库会被安装到 `/usr/local/lib` 中。可以通过以下命令验证是否存在 `libboost_log.so.1.74.0` 文件: ```bash ls /usr/local/lib | grep libboost_log.so.1.74.0 ``` --- #### 方法三:配置动态链接器缓存 即使库文件已存在,但如果动态链接器未能识别其位置,仍会触发类似的错误。此时需更新动态链接器缓存或将库目录显式加入环境变量。 1. 更新动态链接器缓存: 假设 Boost 库被安装到了 `/usr/local/lib`,则可通过以下命令刷新缓存: ```bash sudo ldconfig ``` 2. 显式设置 LD_LIBRARY_PATH 环境变量: 如果不想修改全局配置,也可以通过临时设置 `LD_LIBRARY_PATH` 来指向库所在目录: ```bash export LD_LIBRARY_PATH=/path/to/boost/libs:$LD_LIBRARY_PATH ``` 以上操作完成后重新启动程序即可正常加载共享库[^2]。 --- #### 方法四:检查依赖关系 有时尽管安装了正确的库文件,但由于其他原因仍然会出现找不到共享对象的问题。这时可以利用 `ldd` 工具分析可执行文件的具体依赖情况: ```bash ldd your_executable_name ``` 观察输出结果中是否有任何标记为 “not found” 的条目,并逐一排查这些依赖项是否齐全[^3]。 --- ### 总结 综上所述,要彻底解决 `error while loading shared libraries: libboost_log.so.1.74.0` 错误,应优先考虑通过系统自带的包管理器快速部署相应版本的 Boost Log 组件;若不可行再转而采用手工构建方式获取精确匹配的目标库实例。与此同时调整好动态连接机制的相关参数也是不可或缺的一环。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值