• 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

  • 相关阅读:
    windows下Yarn安装与使用(两种方法)
    git配置公钥---解决码云出现git@gitee.com: Permission denied (publickey)
    npm使用国内镜像的两种方法
    【LeetCode】33. Search in Rotated Sorted Array (4 solutions)
    【LeetCode】83. Remove Duplicates from Sorted List
    【LeetCode】82. Remove Duplicates from Sorted List II
    【LeetCode】85. Maximal Rectangle
    【LeetCode】84. Largest Rectangle in Histogram
    【LeetCode】87. Scramble String
    【LeetCode】162. Find Peak Element (3 solutions)
  • 原文地址:https://www.cnblogs.com/openix/p/2431791.html
Copyright © 2020-2023  润新知