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