ldconfig命令
😄 Written by Zak Zhu
參考
- 沙振宇 | Linux系統命令之ldconfig、ldd (https://shazhenyu.blog.csdn.net/article/details/88064111)
- Linux命令大全 | ldconfig命令 (https://man.linuxde.net/ldconfig)
命令簡介
ldconfig概念
ldconfig
是一個動態庫管理命令, 為了讓動態庫為系統所共享, 須運行該命令.ldconfig
通常在系統啟動時運行, 而當用戶安裝了一個新的動態庫時, 就需要手動運行該命令.
ldconfig作用
在默認搜尋目錄(
/lib
和/usr/lib
)下, 以及動態庫配置文件(/etc/ld.so.conf
和/etc/ld.so.conf.d/*.conf
)里所列的目錄下, 搜索出可共享的動態庫(格式如lib*.so*
), 進而創建出動態裝入程序(ld.so)所需的連接和緩存文件. 緩存文件默認為/etc/ld.so.cache
, 此文件保存動態庫名字列表.
命令語法
Usage:
ldconfig [OPTION...] [PATH...]
Options:
OPTION | COMMENT |
---|---|
-v | 顯示正在掃描的目錄及搜索到的動態庫, 還有它所創建的連接的名字. |
-n | 僅掃描命令行指定的目錄, 不掃描默認搜尋目錄和動態庫配置文件所列的目錄. |
-N | 不重建緩存文件. 若未用 -X 選項, ldconfig 照常更新文件連接. |
-X | 不更新文件的連接. 若未用 -N 選項, ldconfig 照常更新緩存文件 |
-p | 打印出當前緩存文件保存的所有共享庫的名字 |
注意事項
- 往/lib和/usr/lib里面加東西, 是不用修改/etc/ld.so.conf的, 但是完了之后要調一下ldconfig, 不然這個library會找不到.
- 想往上面兩個目錄以外加東西的時候, 一定要修改/etc/ld.so.conf, 然后再調用ldconfig, 不然也會找不到. 比如安裝了一個mysql到/usr/local/mysql, mysql有一大堆library在/usr/local/mysql/lib下面, 這時就需要在/etc/ld.so.conf下面加一行/usr/local/mysql/lib, 保存過后ldconfig一下, 新的library才能在程序運行時被找到.
- 如果想在這兩個目錄以外放lib, 但是又不想在/etc/ld.so.conf中加東西或者是沒有權限加東西. 那也可以, 就是export一個全局變量
LD_LIBRARY_PATH
, 然后運行程序的時候就會去這個目錄中找library. 一般來講這只是一種臨時的解決方案, 在沒有權限或臨時需要的時候使用. - ldconfig做的這些東西都與運行程序時有關, 跟編譯時一點關系都沒有.
- 總之, 就是不管做了什么關於library的變動后, 最好都ldconfig一下, 不然會出現一些意想不到的結果.