ubuntu cannot open shared object file: no such file or directory

在Ubuntu下做程序开发的时候,对于一些需要配置环境变量的编译器或者仿真环境等经常会

遇到类似于如下问题:

libmpfr.so.1: cannot open shared object file: No such file or directory

查看一下系统中是有这个库的,且环境变量 /etc/profile  或 ~/.bashrc中 已经配置

遇到这类问题经常会束手无策,接下来我就在这里做一定的解答:

这类问顾名思义是链接库文件没有找到的问题,我们接下来的工作就是想办法使该链接库路径生效

进行如下操作:

Ubuntu下 执行命令 :    

  1. gedit  /etc/ld.so.conf  


另起一行,添加该共享库的绝对路径


最后执行命令:

  1. ldconfig  

ldconfig 命令主要是为了更新 /etc/ld.so.cache 文件,为了加快程序执行时对共享库的定位速度,避免使用收索路径查找共享库的低效率

这样这个问题就解决了
### Qt 程序运行时错误解决方案 当遇到 `cannot open shared object file: No such file or directory` 的错误时,通常意味着系统无法找到所需的共享库文件。对于Qt应用程序而言,这可能是由于缺少必要的依赖项或环境变量配置不正确所致。 #### 检查缺失的共享库 为了确认具体哪个共享库丢失,可以使用 `ldd` 命令来查看可执行文件所依赖的所有共享库及其路径: ```bash ldd your_qt_application_executable ``` 如果发现某些库显示为 "not found" 或者有类似的提示,则说明这些库确实不存在于系统的标准搜索路径内[^1]。 #### 设置LD_LIBRARY_PATH环境变量 一种临时性的解决办法是在启动应用之前设置 `LD_LIBRARY_PATH` 变量指向包含所需共享库的位置。例如: ```bash export LD_LIBRARY_PATH=/path/to/your/libraries:$LD_LIBRARY_PATH ./your_qt_application_executable ``` 这种方法适用于测试阶段或是当你不想修改全局配置的情况下[^2]。 #### 安装缺失的软件包 很多时候这类问题是由于未安装特定版本的图形驱动或其他开发工具链引起的。针对不同操作系统平台可能需要安装不同的包管理器中的相应组件。比如,在Ubuntu上可以通过apt-get命令安装Mesa OpenGL库: ```bash sudo apt-get update && sudo apt-get install -y libgl1-mesa-glx ``` 而对于其他Linux发行版则应查阅官方文档了解如何获取并安装合适的OpenGL实现[^4]。 #### 修改rpath属性 另一种更持久的方法是对编译后的二进制文件本身进行调整——通过改变其RPATH(Runtime Library Search Path)。可以利用patchelf工具完成这项工作: ```bash patchelf --set-rpath /usr/local/lib:/opt/qt59/lib ./your_qt_application_executable ``` 此操作会使得该程序优先查找指定目录下的共享库而不是依赖默认的系统范围内的位置[^3]。 以上几种方式都可以有效处理因找不到共享对象而产生的Qt程序崩溃现象。建议先尝试简单的途径如设定环境变量;若问题依旧存在再考虑进一步排查具体的依赖关系以及采取更为复杂的措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值