浅谈Linux中ldconfig和ldd的用法
作者:jingxian 发布时间:2021-07-01 14:57:37
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一下,不然会出现一些意想不到的结果。不会花太多的时间,但是会省很多的事。


猜你喜欢
- 一、技术篇1.图片链接调用图片有个特别的属性就是替换文本属性标签,他可以将某一个图片的ALT标签内的信息替换为文本信息,如果这个图片在网页上
- 服务器系统是WINDOWS2003, 启用了防火墙, 并开放了21号端口, 但是用ServU连接不上.....解决方法是在防火墙配置界面增加
- IMail基本安装和设置IMail的基本情况〖运行环境〗:NT/2K〖软件名称〗:IMail Administrator Version 6
- 现在做个人网站想成功,难也不难,不难也难。原因是现在网站太多了,想杀出一条大道是需要很大的魄力的,还有个人网站资金非常有限,不可能拿钱来砸,
- 刚好要重装虚拟机上的CentOS系统,就顺便记录下来给新手朋友们做做参考,在windows平台上通过安装虚拟机学习linux基本上是linu
- 在Discuz!7.0中,有些站长在设置用户组时,可能不小心误删了其他用户组,这样会导致原本属于该用户组的用户无法正常访问论坛。下面笔者详细
- 一年之内,先是搜狐分拆旗下的游戏业务——畅游公司上市,继而盛大网络也将旗下的游戏&mdash
- 2009年10月10号,美图秀秀官网发布了2.0周年版,小编这才发现原来美图秀秀已经一岁了。在感叹时间飞逝的同时,小编针对美图秀秀一年来的改
- 北京时间10月10日消息,据国外媒体报道,谷歌实验产品Google Squared在功能上有所改进,可处理的数据量增长了四倍,还可以支持数据
- 历史Linux镜像创建的ECS云服务器,可能存在NTP没有配置,YUM没有配置,还可能存在最近暴漏较高的安全漏洞,请按照以下步骤进行修复,可
- 一、前言:因朋友想学习一些系统的知识,且用的是苹果本,而自己的笔记本是Windows系统,所以只能安装虚拟机软件VMWare,再在虚拟机里安
- FTP/pub目录:将这个目录的所有者置为"FTP",并且将它的属性设为所有用户均可读、写、执行。这样经过设置,既保证了
- 最近重新转了windows8,然后再win8下想装一个Ubuntu的虚拟机,于是先装了VMware9再安装了ubuntu,但是发
- docker run -iti : interactive 代表交互-t : tty 分配伪 TTY测试不带前台进程的,例如centos/u
- 微软已经改变了DNS向内存装载区域数据的方式。有时候,DNS服务器装载存储在主动目录服务中的非常庞大的区域数据需要一个小时或者更多的时间。这
- 今天一个跳街舞的朋友找我,19岁的小mm,她上网的习惯应该是比较普遍的网民的上网习惯。吃饭之余我也问了一些关于她上网的习惯,很有启发,虽然很
- 经常有人会问:我的网站被莫名的挂上木马,怎么能有效的预防网站被挂马?这个问题需要分具体情况来具体分析。一、如果是自己的服务器因为你只需要远程
- 核心提示:网站被挂马很头痛,站长心急如焚,不急站长哥们给您支招两招轻松搞定。网站被挂马很头痛,站长心急如焚,不急站长哥们给您支招两招轻松搞定
- 帝国cms是我们用得比较多得PHP的建站系统,在建站过程中,如果自己没有信息源,只能靠手工不断的重复copy和粘贴,这样费时费力,于是我们就
- Apache 的虚拟主机就是在一台服务器上运行多个网站,每个虚拟主机都可以绑定独立的域名,为这些域名可以指定单独的目录,访问这些域名的时候,