ldconfig

ldconfig所做的仅与程序运行时相关,与链接没有关系,因此链接时仍应加 -L选项。 

ldconfig是动态链接库的管理命令。该命令主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库,进而创建/跟新ld.so所需的链接和缓存文件。缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表。

 

 

ldconfig

configure dynamic linker run-time bindings

/lib/ld-linux.so.x: execution time linker/loader

/etc/ld.so.conf: File containint a list of colon,space,tab,newline or comma separated directories in which to search for libraries.

/etc/ld.so.cache: File containing a ordered bit of libraries found in the directories specified in /etc/ld.so.conf. This file is not in human readable formats, and is not intended to be edited.

libx.so.version: shared libraries.

 

引述自: www.360doc.com/content/10/1230/21/1378815_82757146.shtml

说明:

-v

显示扫面过的目录和搜索到的动态链接库,以及其锁创建的链接的文件名。

-n

仅扫描命令行指定的目录,不扫扫描默认目录(/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文件。

-I

通常ldconfig搜索动态链接库时将自动建立动态链接库的链接。选择此项时,将进入手动设置模式。

-p  或  --print-cache

指示ldconfig打印出当前缓存文件所保存的所有共享库的名字。可以用来查询系统中有没有某个动态链接库。

-c FORMAT 或 --format=FORMAT

指定缓存文件所使用的格式:ld(老格式)、new(新格式)、compat(兼容格式,默认格式)。

-V

打印版本信息。

 

附:

1、ldconfig dirname

当用户在某个目录下创建或拷贝一个动态链接库,若想使其被系统共享,可以执行“ldconfig dirname”。此命令的功能在于让ldconfig将指定目录下的动态链接库被系统共享起来,意即:在缓存文件/etc/ld.so.cache中追加指定目录下的共享库。需要说明的是,如果此目录不在/lib, /usr/lib及/etc/ld.so.conf文件所列的目录里面,则再度运行ldconfig时,此目录下的动态链接库可能不会再被系统共享(这种操作方法虽然有效,但是效果是暂时的,供程序测试使用,一旦再度运行ldconfig,则缓存文件内容可能改变,所需的动态链接库可能不被系统共享)。

 

附:

编译时引用动态链接库的几种方式。

1、所用的动态链接库在系统目录下(/lib, /usr/lib),使用 -l选项。

gcc -ltest -o hello hello.c

当使用选项-l引用动态链接库时,库名须使用其缩写形式,本例为libtest.so。-l选项和参数之间不能有空格,否则会报错。

2、当所用的动态链接库在系统目录(/lib, /usr/lib)以外的目录时,须用-L来指定动态链接库所在的目录,同时用-l选项指定缩写的动态链接库名。

gcc -Lpath -ltest -o hello hello.c

3、直接引用所需的动态链接库。

gcc -o hello hello.c path/libtest.so

 

请查看:

http://www.cnblogs.com/openix/p/3521166.html

posted on 2012-04-04 10:54  阿加  阅读(592)  评论(0编辑  收藏  举报

导航