解决:error while loading shared libraries:lib***.so.*: cannot open shared object file

本文介绍了当遇到“error while loading shared libraries: lib****.so.*: cannot open shared object file: No such file or directory”这一错误时的解决方法。通过在动态链接库配置中加入库文件位置,并更新/etc/ld.so.cache文件来解决问题。

问题描述:

运行编译后的可执行程序时报错 error while loading shared libraries: lib****.so.*: cannot open shared object file: No such file or directory.

原因分析:

从错误信息提示中,可以知道是在指定的路径找不到或者缺乏这个动态链接库。

解决方案:

//在动态链接库的配置里,加入了库文件的位置
echo "/usr/local/lib" >> /etc/ld.so.conf

//更新/etc/ld.so.cache文件
ldconfig

 

### 解决 rospack 加载共享库 librospack.so 的错误 当遇到 `rospack` 报错提示无法加载共享库 `librospack.so` 时,通常是因为该动态链接库未被正确安装或者其路径未被系统识别。以下是可能的原因以及解决方案: #### 可能原因分析 1. **缺少依赖库** 如果系统的环境中缺失了必要的共享库文件,则会触发此错误[^1]。 2. **环境变量配置不正确** 动态链接器在运行时通过 `$LD_LIBRARY_PATH` 或者 `/etc/ld.so.conf.d/` 中定义的路径来查找所需的 `.so` 文件。如果这些路径中未包含目标库所在的目录,则会出现找不到的情况[^3]。 3. **操作系统版本兼容性问题** 不同的操作系统发行版可能会有不同的包管理策略。例如,在基于 Debian 的系统上,默认情况下不会携带某些特定的应用程序所需的所有外部库[^4]。 #### 解决方案 ##### 方法一:确认并安装缺失的库 可以尝试重新安装 ROS 系统中的核心组件以确保所有必需的二进制文件存在。 ```bash sudo apt-get update && sudo apt-get install --reinstall ros-$ROS_DISTRO-rospack ``` ##### 方法二:检查 LD_LIBRARY_PATH 设置 验证当前用户的 shell 配置是否已将 `librospack.so` 所属的位置加入到 `$LD_LIBRARY_PATH` 中。如果没有设置好相应路径,可以通过以下命令临时添加: ```bash export LD_LIBRARY_PATH=/opt/ros/$ROS_DISTRO/lib:$LD_LIBRARY_PATH ``` 为了使更改永久生效,请编辑个人用户家目录下的 `.bashrc` 文件,并追加上述导出语句。 ##### 方法三:更新动态链接缓存 假如已经手动复制或编译生成了新的 `.so` 文件至标准位置(比如 /usr/local/lib),那么还需要通知系统刷新它的内部记录表单以便立即可用新资源。 ```bash sudo ldconfig ``` ##### 方法四:调试具体失败点 利用工具进一步定位确切的问题所在区域可以帮助更精准地处理异常状况。例如执行 strace 命令跟踪进程行为细节;又或者是借助 ldd 工具查看指定可执行文件的实际依赖关系及其满足状态。 ```bash ldd $(which rospack) strace -f -e trace=open rospack list 2>&1 | grep "No such" ``` 以上操作均有助于排查为何找不到预期的目标库文件。 --- ### 提供一段示范代码用于测试目的 下面给出一个小脚本用来自动化检测是否存在类似的共享库丢失情况,并报告给定名称的相关信息。 ```python import os, sys def check_shared_lib(lib_name): result = os.system(f'ldd {sys.executable} | grep "{lib_name}"') if result !=0 : print(f"The library '{lib_name}' was NOT found.") else: print(f"The library '{lib_name}' exists.") if __name__ == "__main__": lib_to_check="librospack.so" check_shared_lib(lib_to_check) ```
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值