• ldconfig


    ldconfig

    动态链接器的管理命令,依次搜索相关目录的动态链接库,lib**.so.*,创建动态链接装载程序,ld.so或ld-linux.so,所需的链接和缓存文件。

    缓存文件

    一般是/etc/ld.so.cache,主要记录了动态链接库的链接。动态链接装载程序会搜索该缓存文件,进行动态链接库的加载;也就是说,只有记录在该缓存文件中的动态链接库才能被使用。
    命令/sbin/ldconfig -p查看缓存文件

    1118 libs found in cache `/etc/ld.so.cache'
    	libz3.so.4 (libc6,AArch64) => /lib/aarch64-linux-gnu/libz3.so.4
    	libzvbi.so.0 (libc6,AArch64) => /lib/aarch64-linux-gnu/libzvbi.so.0
    	libzvbi-chains.so.0 (libc6,AArch64) => /lib/aarch64-linux-gnu/libzvbi-chains.so.0
    	libzstd.so.1 (libc6,AArch64) => /lib/aarch64-linux-gnu/libzstd.so.1
    	libzmq.so.5 (libc6,AArch64) => /lib/aarch64-linux-gnu/libzmq.so.5
    	libzmf-0.0.so.0 (libc6,AArch64) => /lib/aarch64-linux-gnu/libzmf-0.0.so.0
    	libzbar.so.0 (libc6,AArch64) => /lib/aarch64-linux-gnu/libzbar.so.0
    	libzapojit-0.0.so.0 (libc6,AArch64) => /lib/aarch64-linux-gnu/libzapojit-0.0.so.0
    	libz.so.1 (libc6,AArch64) => /lib/aarch64-linux-gnu/libz.so.1
    	libz.so (libc6,AArch64) => /lib/aarch64-linux-gnu/libz.so
    	libytnef.so.0 (libc6,AArch64) => /lib/aarch64-linux-gnu/libytnef.so.0
    	libyelp.so.0 (libc6,AArch64) => /lib/aarch64-linux-gnu/libyelp.so.0
    	libyaml-0.so.2 (libc6,AArch64) => /lib/aarch64-linux-gnu/libyaml-0.so.2
    	libyajl.so.2 (libc6,AArch64) => /lib/aarch64-linux-gnu/libyajl.so.2
    	libx265.so.192 (libc6,AArch64) => /lib/aarch64-linux-gnu/libx265.so.192
    	libx264.so.160 (libc6,AArch64) => /lib/aarch64-linux-gnu/libx264.so.160
    	libxxhash.so.0 (libc6,AArch64) => /lib/aarch64-linux-gnu/libxxhash.so.0
    	libxvidcore.so.4 (libc6,AArch64) => /lib/aarch64-linux-gnu/libxvidcore.so.4
    	libxtables.so.12 (libc6,AArch64) => /lib/aarch64-linux-gnu/libxtables.so.12
    	libxslt.so.1 (libc6,AArch64) => /lib/aarch64-linux-gnu/libxslt.so.1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    可以看到,缓存文件中每一条记录其实就是动态链接库的链接和路径描述。
    搜索目录

    如何依次搜索相关目录,主要是按照以下优先级进行
    1)环境变量LD_PRELOAD定义的目录
    2)环境变量LD_LIBRARY_PATH定义的目录
    3)ld.so的配置文件,/etc/ld.so.conf定义的目录,可以用ldconfig -f xxx来重新设置
    4)传统目录
    4.1) 32位操作系统为/lib 和 /usr/lib
    4.1) 64位操作系统为/lib64 和 /usr/lib64

    修改文件/etc/ld.so.conf

    1 vim /etc/ld.so.conf
    1 输入以下内容
        include ld.so.conf.d/*.conf
        /usr/local/ffmpeg/lib/
    
    • 1
    • 2
    • 3
    • 4

    使修改的文件/etc/ld.so.conf生效

    ldconfig
    
    • 1

    配置环境变量

    vim ~/.bashrc
    
    export PATH=$PATH:/usr/local/ffmpeg/bin
    
    • 1
    • 2
    • 3

    使环境变量生效

    source ~/.bashrc
    
    • 1

    reference

  • 相关阅读:
    软件代码坏味道之滥用switch
    代餐粉产业分析:中国市场销售额增长至116.94亿元
    linux可视化运维工具
    [Js进阶]bind、call、apply三个方法
    Swagger3被拦截器拦截并报错Unable to infer base url或者Unable to render this definition
    Getx系列之Dialog
    【Kotlin基础系列】第6章 包与导入
    C++ Reference: Standard C++ Library reference: C Library: cstdio: fread
    作用域与作用域链--面试题
    网页大作业代码自取
  • 原文地址:https://blog.csdn.net/liuqingsongmsdn2014/article/details/127952475