【Linux】一步一步学Linux——ldconfig命令(255)
00. 目錄
文章目錄
- 00. 目錄
- 01. 命令概述
- 02. 命令格式
- 03. 常用選項
- 04. 參考示例
- 05. 附錄
01. 命令概述
ldconfig命令的用途主要是在默認搜尋目錄/lib和/usr/lib以及動態庫配置文件/etc/ld.so.conf內所列的目錄下,搜索出可共享的動態鏈接庫(格式如lib*.so*),進而創建出動態裝入程序(ld.so)所需的連接和緩存文件。緩存文件默認為/etc/ld.so.cache,此文件保存已排好序的動態鏈接庫名字列表,為了讓動態鏈接庫為系統所共享,需運行動態鏈接庫的管理命令ldconfig,此執行程序存放在/sbin目錄下。
ldconfig通常在系統啟動時運行,而當用戶安裝了一個新的動態鏈接庫時,就需要手工運行這個命令。
02. 命令格式
用法: ldconfig [選項...]03. 常用選項
-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 不要生成連接-?, --help 給出該系統求助列表--usage 給出簡要的用法信息-V, --version 打印程序版本號長選項的強制或可選參數對對應的短選項也是強制或可選的。04. 參考示例
4.1 生效動態庫配置文件
[deng@localhost 1gcc]$ sudo ldconfig [sudo] deng 的密碼: [deng@localhost 1gcc]$4.2 查看mysql相關的動態鏈接庫
[deng@localhost 1gcc]$ ldconfig -p | grep mysqllibmysqlclient.so.20 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so.20libmysqlclient.so (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so [deng@localhost 1gcc]$4.3 將usr/local/lib加入動態鏈接庫
[deng@localhost 1gcc]$ sudo ldconfig /usr/local/lib [deng@localhost 1gcc]$ldconfig幾個需要注意的地方:
往/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做的這些東西都與運行程序時有關,跟編譯時一點關系都沒有。編譯的時候還是該加-L就得加,不要混淆了。
總之,就是不管做了什么關于library的變動后,最好都ldconfig一下,不然會出現一些意想不到的結果。不會花太多的時間,但是會省很多的事。
再有,諸如libdb-4.3.so文件頭中是會含有庫名相關的信息的(即含“libdb-4.3.so”,可用strings命令察看),因此僅通過修改文件名以冒充某已被識別的庫(如libdb-4.8.so)是行不通的。為此可在編譯庫的Makefile中直接修改配置信息,指定特別的庫名。
05. 附錄
參考:【Linux】一步一步學Linux系列教程匯總
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【Linux】一步一步学Linux——ldconfig命令(255)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux】一步一步学Linux——o
- 下一篇: 【Linux】一步一步学Linux——l