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

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,就足以了。

相关文章