ldconfig 函式庫工具

  1. ldconfig 可以將動態函式庫載入快取記憶體( cache ),以增進動態函式庫的讀取速度。
    [dywang@dyw219 make1]$ ldconfig --help
    Usage: ldconfig [OPTION...]
    Configure Dynamic Linker Run Time Bindings.
    
      -c, --format=FORMAT        Format to use: new, old or compat (default)
      -C CACHE                   Use CACHE as cache file
      -f CONF                    Use CONF as configuration file
      -i, --ignore-aux-cache     Ignore auxiliary cache file
      -l                         Manually link individual libraries.
      -n                         Only process directories specified on the command
                                 line.  Don't build cache.
      -N                         Don't build cache
      -p, --print-cache          Print cache
      -r ROOT                    Change to and use ROOT as root directory
      -v, --verbose              Generate verbose messages
      -X                         Don't generate links
      -?, --help                 Give this help list
          --usage                Give a short usage message
      -V, --version              Print program version
    
    Mandatory or optional arguments to long options are also mandatory or optional
    for any corresponding short options.
    
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/libc/bugs.html>.
    
  2. 參數簡要說明
    -f conf :conf 預設為 /etc/ld.so.conf  
    -C cache:cache 預設為 /etc/ld.so.cache 
    -p   :列出目前在 cache 內的資料
    
  3. /etc/ld.so.conf 記錄要讀入快取記憶體的動態函式庫所在的目錄,顯示檔案內容只有一行,include ld.so.conf.d 目錄下的所有 .conf 檔。
    [dywang@dyw219 make1]$ cat /etc/ld.so.conf
    include ld.so.conf.d/*.conf
    [dywang@dyw219 make1]$ ls /etc/ld.so.conf.d/
    atlas-x86_64.conf                  kernel-ml-4.4.5-1.el6.elrepo.x86_64.conf
    compat-mysql51-x86_64.conf         kernel-ml-4.8.12-1.el6.elrepo.x86_64.conf
    ctapi-x86_64.conf                  mysql-x86_64.conf
    kernel-2.6.32-696.el6.x86_64.conf  qt-x86_64.conf
    
  4. /etc 目錄必須是 root 才能寫入,所以先轉換身份為 root。
    [dywang@dyw219 make1]$ su -
    
  5. 在 ld.so.conf.d 目錄下新增一個檔案 xorg.conf,寫入 xorg 模組儲存位置。
    [root@dyw219 ~]# echo '/usr/lib64/xorg/modules/' >> /etc/ld.so.conf.d/xorg.conf
    [root@dyw219 ~]# cat /etc/ld.so.conf.d/xorg.conf
    /usr/lib64/xorg/modules/
    
  6. ldconfig 以選項 -p 查詢目前 cache 中沒有 xorg 相關的函式庫。
    [root@dyw219 ~]# ldconfig -p | grep xorg
    
  7. ldconfig 重新載入函式庫到 cache。
    [root@dyw219 ~]# ldconfig
    
  8. ldconfig 以選項 -p 再查詢目前 cache 中有 xorg 相關的函式庫。
    [root@dyw219 ~]# ldconfig -p | grep xorg
    	libwfb.so (libc6,x86-64) => /usr/lib64/xorg/modules/libwfb.so
    	libvgahw.so (libc6,x86-64) => /usr/lib64/xorg/modules/libvgahw.so
    	libvbe.so (libc6,x86-64) => /usr/lib64/xorg/modules/libvbe.so
    	libshadowfb.so (libc6,x86-64) => /usr/lib64/xorg/modules/libshadowfb.so
    	libshadow.so (libc6,x86-64) => /usr/lib64/xorg/modules/libshadow.so
    	libint10.so (libc6,x86-64) => /usr/lib64/xorg/modules/libint10.so
    	libglamoregl.so (libc6,x86-64) => /usr/lib64/xorg/modules/libglamoregl.so
    	libfbdevhw.so (libc6,x86-64) => /usr/lib64/xorg/modules/libfbdevhw.so
    	libfb.so (libc6,x86-64) => /usr/lib64/xorg/modules/libfb.so
    	libexa.so (libc6,x86-64) => /usr/lib64/xorg/modules/libexa.so
    
  9. 刪除 xorg.conf,再重新載入,cache 中沒有 xorg 相關函式庫。
    [root@dyw219 ~]# rm /etc/ld.so.conf.d/xorg.conf 
    [root@dyw219 ~]# ldconfig
    [root@dyw219 ~]# ldconfig -p | grep xorg
    
  10. 資料同時也記錄一份在檔案 /etc/ld.so.cache 中。
    [root@dyw219 ~]# ll /etc/ld.so.cache 
    -rw-r--r--. 1 root root 98744 Apr 27 20:37 /etc/ld.so.cache