浅谈Linux中ldconfig和ldd的用法

linuxldconfigldd 2024-04-15

ldd 查看程序依赖库

ldd

作用:用来查看程式运行所需的共享库,常用来解决程式因缺少某个库文件而不能运行的一些问题。

示例:查看test程序运行所依赖的库:

/opt/app/todeav1/test$ldd test
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000039a7e00000)
libm.so.6 => /lib64/libm.so.6 (0x0000003996400000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000039a5600000)
libc.so.6 => /lib64/libc.so.6 (0x0000003995800000)
/lib64/ld-linux-x86-64.so.2 (0x0000003995400000)

•第一列:程序需要依赖什么库

•第二列: 系统提供的与程序需要的库所对应的库

•第三列:库加载的开始地址

通过上面的信息,我们可以得到以下几个信息:

1.通过对比第一列和第二列,我们可以分析程序需要依赖的库和系统实际提供的,是否相匹配

2.通过观察第三列,我们可以知道在当前的库中的符号在对应的进程的地址空间中的开始位置

如果依赖的某个库找不到,通过这个命令可以迅速定位问题所在;

注解

原理:

ldd不是个可执行程式,而只是个shell脚本; ldd显示可执行模块的dependency的工作原理,其实质是通过ld-linux.so(elf动态库的装载器)来实现的。ld-linux.so模块会先于executable模块程式工作,并获得控制权,因此当上述的那些环境变量被设置时,ld-linux.so选择了显示可执行模块的dependency。

--------------------------------------------------------------

ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令–ldconfig。 ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态 链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.

linux下的共享库机制采用了类似于高速缓存的机制,将库信息保存在/etc/ld.so.cache里边。

程序连接的时候首先从这个文件里边查找,然后再到ld.so.conf的路径里边去详细找。

这就是为什么修改了ld.so.conf要重新运行一下ldconfig的原因

补充一点,ldconfig在/sbin里面。

ldconfig几个需要注意的地方

1. 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library会找不到

2. 想往上面两个目录以外加东西的时候,一定要修改/etc/ld.so.conf,然后再调用ldconfig,不然也会找不到

比如安装了一个mysql到/usr/local/mysql,mysql有一大堆library在/usr/local/mysql /lib下面,这时 就需要在/etc/ld.so.conf下面加一行/usr/local/mysql/lib,保存过后ldconfig一下,新的library才能在 程序运行时被找到。

3. 如果想在这两个目录以外放lib,但是又不想在/etc/ld.so.conf中加东西(或者是没有权限加东西)。那也可以,就是export一个全局变 量LD_LIBRARY_PATH,然后运行程序的时候就会去这个目录中找library。一般来讲这只是一种临时的解决方案,在没有权限或临时需要的时 候使用。

4. ldconfig做的这些东西都与运行程序时有关,跟编译时一点关系都没有。编译的时候还是该加-L就得加,不要混淆了。

5. 总之,就是不管做了什么关于library的变动后,最好都ldconfig一下,不然会出现一些意想不到的结果。不会花太多的时间,但是会省很多的事。

以上这篇浅谈Linux中ldconfig和ldd的用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

5个安全运营中心优秀做法

研究数据表明,安全运营中心(SOC)可以显著推动企业的网络安全计划,这使SOC成为有效企业网络安全计划的基石。从平均总控制时间来看,非常成功的网络安全企业与不那么成功的网络安全企业相比,部署SOC的可能性高52%。实际上,仅部署SOC就可将企业控制数据泄露事故...
服务器安全网络安全SOC安全运营中心

云服务器是什么?云服务器可以用来干嘛?

随着云计算产业链的不断延伸,虚拟化、分布式、运维管理等技术渐趋发展成熟,高大上的云计算首次走向平民化,常态化,互联网企业上云已经不再是什么高门槛的技术,引发全民上云热潮!云服务器作为云计算的重要衍生产物,技术创新使得价格越来越亲民,从而也为更多中小企业上云提供...
云服务器

了解虚拟化的灾难恢复实践和实用性

虚拟拟化灾难恢复的元素在物理世界中是不可用的,可以使IT生活更轻松。是不是该让组织实现虚拟化了吗?虚拟化灾难恢复已经采取了一些复杂的灾难恢复措施,但是许多管理员误解或曲解了虚拟世界中这种模式转变的好处。关键的是,虚拟灾难恢复必须仍然保持真实的灾难恢复的最终结果...
虚拟主机虚拟化灾难恢复

Ubuntu安装屏幕录像工具Simple Screen Recorder的方法

Simple Screen Recorder是一款简单的屏幕录像工具,能够在屏幕上录制视频、教程,可用于手机和电脑系统,下面小编就给大家介绍下Ubuntu安装Simple Screen Recorder的方法。  最终版本 Simple Screen Reco...
ubuntu屏幕录像