linux命令之添加系统搜索动态库目录-ldconfig
ldconifg,/etc/ld.so.conf,/etc/ld.so.cache三個的關系
一般情況下我們可以將程序需要搜索動態庫的路徑配置到ld_library_path這個環境變量中,不過很多系統的庫我們沒有配置到這個環境變量中也是可以找到的,ldconfig就如同windows的系統環境變量,ldconfig命令的用途就是添加掃描到的動態庫路徑到系統搜索動態庫的配置文件中。
這個動態庫路徑配置文件就叫ld.so.cache,看名字更像是一個庫路徑的緩沖區,我們可以輸入命令cat /etc/ld.so.cache看看里面滿滿的都是庫的路徑:
libzzipwrap-0.so.13/usr/lib/x86_64-linux-gnu/libzzipwrap-0.so.13libzzipmmapped-0.so.13/usr/lib/x86_64-linux-gnu/libzzipmmapped-0.so.13libzzipfseeko-0.so.13 /usr/lib/x86_64-linux-gnu/libzzipfseeko-0.so.13libzzip-0.so.13/usr/lib/x86_64-linux-gnu/libzzip-0.so.13libzvbi.so.0 /usr/lib/x86_64-linux-gnu/libzvbi.so.0libzvbi-chains.so.0/usr/lib/x86_64-linux-gnu/libzvbi-chains.so.0libzmq.so.5 /usr/lib/x86_64-linux-gnu/libzmq.so.5libz.so.1/lib/x86_64-linux-gnu/libz.so.1libz.so/usr/lib/x86_64-linux-gnu/libz.solibyaml-0.so.2 /usr/lib/x86_64-linux-gnu/libyaml-0.so.2libyaml-cpp.so.0.5/usr/lib/x86_64-linux-gnu/libyaml-cpp.so.0.5libyajl.so.2 /usr/lib/x86_64-linux-gnu/libyajl.so.2libx265.so.79/usr/lib/x86_64-linux-gnu/libx265.so.79libx264.so.148 /usr/lib/x86_64-linux-gnu/libx264.so.148libxvidcore.so.4/usr/lib/x86_64-linux-gnu/libxvidcore.so.4libxtables.so.11 /lib/x86_64-linux-gnu/libxtables.so.11libxslt.so.1/usr/lib/x86_64-linux-gnu/libxslt.so.1libxshmfence.so.1 /usr/lib/x86_64-linux-gnu/libxshmfence.so.1libxshmfence.so/usr/lib/x86_64-linux-gnu/libxshmfence.solibxml2.so.2 /usr/lib/x86_64-linux-gnu/libxml2.so.2libxml2.so/usr/lib/x86_64-linux-gnu/libxml2.solibxkbcommon.so.0 /usr/lib/x86_64-linux-gnu/libxkbcommon.so.0libxcb.so.1/usr/lib/x86_64-linux-gnu/libxcb.so.1libxcb.so /usr/lib/x86_64-linux-gnu/libxcb.solibxcb-xinerama.so.0/usr/lib/x86_64-linux-gnu/libxcb-xinerama.so.0libxcb-xfixes.so.0 /usr/lib/x86_64-linux-gnu/libxcb-xfixes.so.0libxcb-xfixes.so/usr/lib/x86_64-linux-gnu/libxcb-xfixes.solibxcb-sync.so.1 /usr/local/samba/lib/libwbclient.so.0libwbclient.so/usr/local/samba/lib/libwbclient.solibwayland-server.so.0 /usr/lib/x86_64-linux-gnu/libwayland-server.so.0libwayland-egl.so.1/usr/lib/x86_64-linux-gnu/libwayland-egl.so.1libwayland-cursor.so.0 /usr/lib/x86_64-linux-gnu/libwayland-cursor.so.0libwayland-client.so.0/usr/lib/x86_64-linux-gnu/libwayland-client.so.0libwavpack.so.1 /usr/lib/x86_64-linux-gnu/libwavpack.so.1libv8.so.3.14.5/usr/lib/libv8.so.3.14.5libv4l2.so.0/usr/lib/x86_64-linux-gnu/libv4l2.so.0libv4l1.so.0 (實際看是沒有換行的,還有一些亂碼,畢竟不是文本格式來寫,這里只是為了看的清楚手動換了行)。ldconfig的原理是通過掃描默認目錄/lib和/usr/lib,以及/etc/ld.so.conf中配置的目錄,將里面的所有動態庫路徑保存到一個ld.so.cache文件中,然后執行程序的時候就在里面搜索程序所需要的庫。
所以往上面兩個默認目錄中加了新的庫要執行一下ldconfi命令,以便將新添加的庫路徑添加到ld.so.cache中;往ld.so.conf中加了新的路徑,也要執行一下ldconfig命令,以便掃描新加的目錄將新目錄中的動態庫路徑添加到ld.so.cache中。
另外想要切換到sudo執行路徑,要執行sudo ldconfig命令。
在終端輸入ldconfig --help查看其他的選項:
用法: ldconfig.real [選項...] 設置運行時期動態連接-c, --format=FORMAT 采用的格式:新、舊或兼容(默認)-C CACHE 將 CACHE 用作緩沖區文件-f CONF 將 CONF 用作配置文件-i, --ignore-aux-cache 忽略輔助緩存文件-l 手工連接獨立的庫。-n只在命令行中給出了進程目錄。未創建緩沖區。-N 不要創建緩沖區-p, --print-cache 打印緩沖區-r ROOT 進入 ROOT 目錄并將其作為根目錄-v, --verbose 生成詳細消息-X Don't update symbolic links-?, --help 給出該系統求助列表--usage 給出簡要的用法信息-V, --version 打印程序版本號長選項的強制或可選參數對對應的短選項也是強制或可選的。要知道錯誤報告指令,請參看: <https://bugs.launchpad.net/ubuntu/+source/glibc/+bugs>。《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的linux命令之添加系统搜索动态库目录-ldconfig的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux命令之查看当前shell环境变
- 下一篇: 浅谈Linux中ldconfig和ldd