Linux程序找不到共享库 .so 文件

news/2024/10/18 18:28:29/文章来源:https://www.cnblogs.com/Jeffxu/p/18474839

运行 Linux 程序的时候提示找不到共享库错误: error while loading shared libraries: libLinuxCpp_02_Lib.so: cannot open shared object file: No such file or directory。

Linux程序在加载 so 库文件时,搜索顺序依次如下所示。如果所有的位置都找不到,就会爆以上的错误信息,提示找不到共享库。因此优先级也是从上到下依次降低,即如果多个地方都进行了不同的设置,则会按照优先级高的设置进行搜索

  1. rpath 信息,编译链接时写入到可执行文件内部的数据
  2. LD_LIBRARY_PATH 环境变量
  3. runpath 信息,编译链接时写入到可执行文件内部的数据
  4. /etc/ld.so.conf 文件中列出的路径
  5. /lib、/usr/lib 等系统默认路径

对于运行时找不到共享库,常用的有三种方式:

  • 编辑自己的 .conf文件
  • 添加临时环境变量 LD_LIBRARY_PATH
  • 将.so 文件拷贝到系统默认加载共享库的路径:/lib/usr/lib

一、添加编辑自定义 .conf 文件

该方式为发布程序时,加载附加 .so文件的常用方法,可以避免修改系统自带的 .conf 文件,也是较为推荐的方法。

1、创建自定义 .conf 文件
# 进入到 /etc/ld.so.conf.d 目录下
cd /etc/ld.so.conf.d/# 创建 xxx.conf 文件,文件名称自定,文件类型必须为 .conf
sudo vim libCustom.conf
2、将依赖.so文件路径添加进来

在新建的 libCustom.conf 文件中,添加所依赖的 .so 文件的路径,以告诉系统在哪里去找对应的共享库。然后保存并退出。

/home/projects/LinuxCpp_02_Lib/bin/x64/Debug/

3、更新动态链接库缓存

sudo ldconfig 执行更新动态链接库缓存的命令,以保证新增加的共享库能够被系统识别。然后执行可执行程序将不会提示找不到共享库的错误。



【参考资料】
【linux】程序找不到动态库.so的解决办法|查看.so动态库信息|.so动态库加载顺序
一文读懂Linux下动态链接库版本管理及查找加载方式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/816998.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

E-拼接串

题目: 思路:在已有的数组中寻找符合条件,也就是没有重复数字的子数组,以掩码的对应位的形式来表示当前子数组元素的存在,之后双重循环生成所有子数组,内层循环中,判断当前元素是否存在掩码中,存在则推出,不存在则加入掩码并标记。用另一个循环来更新 sum 数组,使得每…

低空经济如何实现商业化

随着技术的进步和政策的支持,低空经济正逐渐成为推动经济发展的新引擎。低空经济,主要指利用低空空域资源,通过有人驾驶和无人驾驶航空器的低空飞行活动,带动相关领域融合发展的综合性经济形态。当前,低空经济的商业化正面临前所未有的机遇与挑战。 技术突破是基础技术是推…

[49 50] (多校联训) A层冲刺NOIP2024模拟赛08 | CSP-S 模拟 12

一小孩在奶茶店玩封盖机被绞断四根手指 记者:你现在感觉怎么样 小孩:👍不是哥们 P 的,你可以自己去 hdk吧 找我左手中指指甲里莫名其妙卡了个木刺 医生 1:(打手电筒) 医生 2:(尝试把刺弄出来) 医生 2:诶呀,断了 医生 2:你就这么想拔这个刺吗 我:这不拔能行? 医…

Fluid Flux2.0海浪原理拆解

【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递生生不息!大概一年前,在油管上看到这个视频: Fluid Flux 2.0 - Coastline [Unreal Engine 5]除了效果很好,更重要的是看到简介中写着:“并非实…

PHP将整形数字转为Excel下标

1、背景 这两天在接到一个需求,需要导出一个班级所有学员的所有成绩,在最后excel表处理的时候发现导出的列超过了26列,后面会出现AA之类的下标,所以写了一个函数把数字整型转为Excel对应的下标。 2、转换函数/*** @Notes:将整数转为excel对应的列标* @Function int_to_chr*…

18. 模块

一、什么是模块模块化 指将一个完成的程序分解为一个一个小的模块。通过将模块组合,来搭建一个完整的程序。如果不采用模块化,那么所有的代码将统一保存到一个文件中。采用模块化后,将程序分别编写到多个文件中。使用模块化后,我们可以把代码进行复用,这方面后序的开发和维…

csp-s模拟12

csp-s模拟12\(T1\) T2918. 小 h 的几何 \(100pts\)对于任意三角形,均有其三条边的中点、三条高的垂足、三个顶点与垂心连线的中点,这九个点在一个圆上。观察样例可知,对于单位圆上 \(\triangle ABC\) 的三个顶点 \(A(x_{a},y_{a}),B(x_{b},y_{b}),C(x_{c},y_{c})\) ,其九点…

Android8,reactnative中webView传的token,vue中获取不到是怎么回事?

rn代码是这样的,要在vue页面获取到tokenvue中是这样写的,安卓9以上都能得到,就是8获取不到有没有大佬帮忙看看,跪谢!!!!

实时同步服务

1 实时同步应用场景通过rsync+定时任务实现定时备份/同步 对于NFS我们需要进行实时同步2 实时同步工具选型实时同步工具 特点 选型inotify工具+脚本inotify监控指定的目录,监控 目录下是否有变化,显示变化了的文件. 通过rsync服务端与客户端传送,书写脚本.不推荐,有性能问题.se…

五款免费报表工具推荐:山海鲸报表、Tableau 等优劣对比

在当今数据驱动的时代,报表工具已经成为各类企业进行决策和管理的重要工具。无论是大中型企业还是小微企业,能够快速、高效地生成可视化报表,洞察业务运营情况,已经成为提升竞争力的关键。今天为大家挑选了5款非常优秀的报表软件,并且详细分析了它们的优缺点,希望能够帮助…

DevExpress隐藏列表中显示的加号+

GridView1.OptionsDetail.EnableMasterViewMode = False