银河国际手机版最新Linux的ldconfig命令和ldd命令用法,linux动态链接库

Linux下动态链接库管理,linux动态链接库

一. ldd命令

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的主要用途:

暗中认可搜寻/lilb和/usr/lib,以及安插文件/etc/ld.so.conf内所列的目录下的库文件。

查究出可分享的动态链接库,库文件的格式为:lib***.so.**,进而成立出动态装入程序(ld.so)所需的三番五次和缓存文件。

缓存文件默以为/etc/ld.so.cache,该公文物保护留已排好序的动态链接库名字列表。

ldconfig常常在系统运行时运维,而当顾客安装了贰个新的动态链接库时,就需求手工作运动行那一个命令。

ldconfig命令参数表达:

1、
-v或–verbose:用此选项时,ldconfig将显示正在扫描的目录及追寻到的动态链接库,还会有它所创设的连年的名字.

2、-n
:用此选项时,ldconfig仅扫描命令行内定的目录,不扫描暗许目录(/lib,/usr/lib),也不扫描配置文件/etc/ld.so.conf所列的目录.

3、-N
:此选项提示ldconfig不重新建立缓存文件(/etc/ld.so.cache).若未用-X选项,ldconfig照常更新文件的连接.

4、-X
: 此选项提醒ldconfig不立异文件的连接.若未用-N选项,则缓存文件平常更新.

5、-f CONF
: 此选项钦定动态链接库的安顿文件为CONF,系统默感到/etc/ld.so.conf.

6、-C CACHE
:此选项钦命生成的缓存文件为CACHE,系统暗中认可的是/etc/ld.so.cache,此文件寄存已排好序的可分享的动态链接库的列表.

7、-r ROOT
:此选项改动应用程序的根目录为ROOT(是调用chroot函数完结的).选拔此项时,系统默许的布局文件/etc/ld.so.conf,实际对应的为ROOT/etc/ld.so.conf.如用-r/usr/zzz时,张开配置文件/etc/ld.so.conf时,实际展开的是/usr/zzz/etc/ld.so.conf文件.用此选项,能够大大扩大动态链接库处理的灵巧性.

8、-l
:日常状态下,ldconfig寻觅动态链接库时将自行创设动态链接库的连接.选取此项时,将步向专家情势,必要手工业安装连接.日常客商不用此项.

9、-p或–print-cache
:此选项提示ldconfig打字与印刷出当下缓存文件所保存的享有分享库的名字.

10、-c FORMAT 或–format=FORMAT
:此选项用于内定缓存文件所利用的格式,共有三种:ld(老格式),new(新格式)和compat(宽容格式,此为暗中认可格式).

11、-V : 此选项打字与印刷出ldconfig的版本音讯,而后退出.

12、- 或 –help 或–usage
: 那多少个挑选作用一样,都是让ldconfig打字与印刷出其帮忙音信,而后退出。

ldconfig须要当心的地点:

1、往/lib和/usr/lib里边加东西,是并不是修改/etc/ld.so.conf文件的,不过增加完后内需调用下ldconfig,不然加多的library会找不到。

2、借使加上的library不在/lib和/usr/lib里面包车型客车话,就一定要修改/etc/ld.so.conf文件,往该文件追加library所在的门路,然后也急需再行调用下ldconfig命令。比如在安装MySQL的时候,其库文件/usr/local/mysql/lib,就须要充实到/etc/ld.so.conf文件中。命令如下:

# echo”/usr/local/mysql/lib” >> /etc/ld.so.conf

#ldconfig -v | grep mysql

三. LD_LIBRARY_PATH

即使加上的library不在/lib或/usr/lib下,不过却从未权力操。写/etc/ld.so.conf文件的话,那时就需求往export里写多个大局变量LD_LIBRARY_PATH,就能够了。

 

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一下,不然会并发有的匪夷所思的结果。不会花太多的时日,不过会省非常多的事。

正文永远更新链接地址:http://www.linuxidc.com/Linux/2017-01/139071.htm

银河国际手机版最新 1

发表评论

电子邮件地址不会被公开。 必填项已用*标注