您的位置首页>企业动态>

Linux中的ldconfig命令详解

导读 大家好,我是极客范的本期栏目编辑小友,现在为大家讲解Linux中的ldconfig命令详解问题。06151 介绍ldconfig命令用于搜索可共享的动态链接

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解Linux中的ldconfig命令详解问题。

0615

1.介绍

ldconfig命令用于搜索可共享的动态链接库(如lib*)。so*)在默认搜索目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf中列出的目录,然后创建动态链接器(ld.so或ld-linux.so)所需的缓存文件。默认情况下,缓存文件是/etc/ld.so.cache,它保存有序的动态链接库名称列表。为了与系统共享动态链接库,需要运行动态链接库的管理命令ldconfig来更新动态链接库的缓存文件。

Ldconfig位于/sbin目录中,该目录通常在系统启动时运行。当用户安装新的动态链接库时,需要手动运行该命令。

2.命令格式

/sbin/ldconfig[-nNvXV][-f conf][-C缓存] [ -r根目录]目录./sbin/ldconfig -l [ -v ]库./sbin/ldconfig -p

3.参数描述

-v,- verbose使用此选项时,ldconfig将显示正在扫描的目录、搜索的动态链接库及其创建的链接的名称。-n ldconfig只扫描命令行指定的目录,不扫描默认目录(/lib,/usr/lib),也不扫描配置文件/etc/ld.so.conf中列出的目录-N ldconfig不重建缓存文件(/etc/ld.so.cache)。如果不使用-X选项,ldconfig将照常更新文件的链接。-X ldconfig不会更新文件的链接。如果不使用-N选项,缓存文件将照常重建。-f 《conf》指定动态链接库的配置文件为《conf》。默认情况下,/etc/ld.so.conf -C 《cache》指定生成的缓存文件为《cache》,默认情况下,/etc/ld.so.cache .此文件存储可共享动态链接库的有序列表-r 《root》将应用程序的根目录更改为《root》(通过调用chroot函数实现)。当选择此选项时,系统默认配置文件/etc/ld.so.conf实际上对应于《root》/etc/ld.so.conf With-r/usr/zzz,当您打开配置文件/etc/LD . so . conf时,实际上是打开了/usr/zzz/etc/ld.so.conf文件。通过此选项,可以大大增加动态链接库管理的灵活性。-l通常情况下,当ldconfig搜索动态链接库时,会自动建立动态链接库的链接。选择此选项后,将进入专家模式,需要手动设置链接。一般用户不需要这个选项-p,-print-cacheldconfig打印出当前缓存文件保存的所有共享库的名称-c FORMAT或- format=FORMAT:这个选项用于指定缓存文件使用的格式,有三种类型:旧(旧格式)、新(新格式)和compat(兼容格式,默认格式)。-V打印出ldconfig的版本信息-?三个选项- help和- usage具有相同的功能,它们都是让ldconfig打印出它的帮助信息。

4.常见的例子

(1)显示ldconfig帮助信息。

ldconfig -?

(2)显示ldconfig版本信息。

ldconfig -V

(3)刷新动态链接库缓存文件

sudo ldconfig

5.有关注意事项

(1)将动态链接库添加到/lib和/usr/lib中,不需要修改/etc/ld.so.conf,但之后要调整ldconfig,否则找不到库。

(2)当你想给上面两个目录添加东西的时候,必须先修改/etc/ld.so.conf,然后调用ldconfig,否则找不到。

例如,安装一个mysql到/usr/local/mysql。mysql在/usr/local/mysql/lib下有很多库。此时需要添加一行/usr/local/mysql/lib到/etc/ld.so.conf,保存后执行ldconfig更新动态链接库cache /etc/ld.so.cache,这样就可以放入新库了

(3)如果想把lib放在/lib和/usr/lib的目录之外,又不想在/etc/ld.so.conf中添加动态链接库的目录(或者没有权限添加)。然后你可以导出一个全局变量LD_LIBRARY_PATH,然后当你运行程序的时候,你会在这个目录中寻找这个库。一般来说,这只是一个临时解决方案,在没有权限或临时需要的情况下使用。

(4)ldconfig对动态链接库缓存文件的更新4)ldconfig只与程序运行时有关,与编译时无关。如果在编译时需要添加-L,就必须添加。不要困惑。

(5)总之,不管你做什么。

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

原文标题:每天一个 Linux 命令(75):ldconfig 命令

文章出处:【微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

0615

1.简介

ldconfig 命令用于在默认搜寻目录 /lib 和 /usr/lib 以及动态库配置文件 /etc/ld.so.conf 内所列的目录下,搜索出可共享的动态链接库(格式如 lib*.so*),进而创建出动态链接器(ld.so 或 ld-linux.so)所需的缓存文件。缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表。为了让动态链接库为系统所共享,需运行动态链接库的管理命令 ldconfig 更新动态链接库的缓存文件。

ldconfig 位于 /sbin 目录下,通常在系统启动时运行,当用户安装了一个新的动态链接库时,需要手动运行这个命令。

2.命令格式

/sbin/ldconfig [ -nNvXV ] [ -f conf ] [ -C cache ] [ -r root ] directory 。.. /sbin/ldconfig -l [ -v ] library 。.. /sbin/ldconfig -p

3.参数说明

-v, --verbose 用此选项时,ldconfig 将显示正在扫描的目录及搜索到的动态链接库,还有它所创建的链接的名字 -n ldconfig仅扫描命令行指定的目录,不扫描默认目录(/lib、/usr/lib),也不扫描配置文件 /etc/ld.so.conf 所列的目录。 -N ldconfig 不重建缓存文件(/etc/ld.so.cache),若未用 -X 选项,ldconfig 照常更新文件的链接 -X ldconfig 不更新文件的链接,若未用 -N 选项,则缓存文件照常重建 -f 《conf 》 指定动态链接库的配置文件为 《conf 》 ,系统默认为 /etc/ld.so.conf -C 《cache》 指定生成的缓存文件为 《cache》,系统默认的是 /etc/ld.so.cache,此文件存放已排好序的可共享的动态链接库的列表 -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 文件。用此选项,可以大大增加动态链接库管理的灵活性 -l 通常情况下,ldconfig 搜索动态链接库时将自动建立动态链接库的链接,选择此项时,将进入专家模式,需要手工设置链接,一般用户不用此项 -p, --print-cache ldconfig 打印出当前缓存文件保存的所有共享库的名字 -c FORMAT 或 --format=FORMAT:此选项用于指定缓存文件所使用的格式,共有三种:old(老格式),new(新格式)和compat(兼容格式,此为默认格式)。 -V 打印出 ldconfig 的版本信息 -?, --help, --usage 这三个选项作用相同,都是让ldconfig打印出其帮助信息

4.常用示例

(1)显示 ldconfig 帮助信息。

ldconfig -?

(2)显示 ldconfig 版本信息。

ldconfig -V

(3)刷新动态链接库缓存文件 /etc/ld.so.cache。

sudo ldconfig

5.注意事项

(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 更新一下动态链接库缓存 /etc/ld.so.cache,新的 library 才能在程序运行时被找到。

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

(4)ldconfig 更新动态链接库的缓存文件只与程序运行时有关,跟编译时没有关系。编译时需要加 -L 就得加,不要混淆了。

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

原文标题:每天一个 Linux 命令(75):ldconfig 命令

文章出处:【微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

.dfma { position: relative; width: 1000px; margin: 0 auto; } .dfma a::after { position: absolute; left: 0; bottom: 0; width: 30px; line-height: 1.4; text-align: center; background-color: rgba(0, 0, 0, .5); color: #fff; font-size: 12px; content:"广告"; } .dfma img { display: block; }
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。