首頁  >  文章  >  運維  >  linux ldconfig是什麼

linux ldconfig是什麼

藏色散人
藏色散人原創
2023-03-28 09:56:112090瀏覽

linux ldconfig是動態連結庫管理指令;主要是在預設搜尋目錄「/lib」和「/usr/lib」以及動態函式庫設定檔「/etc/ld.so.conf」內所在列的目錄下,搜尋出可共享的動態連結庫;ldconfig通常在系統啟動時執行,而當使用者安裝了新的動態連結庫時,就需要手動執行ldconfig指令。

linux ldconfig是什麼

本教學操作環境:linux5.9.8系統、Dell G3電腦。

linux ldconfig是什麼?

ldconfig是動態連結庫管理指令,指令的用途,主要是在預設搜尋目錄(/lib和/usr/lib)以及動態函式庫設定檔/etc/ld.so.conf內所列的目錄下,搜尋出可共享的動態連結庫(格式如前介紹,lib*.so*),進而建立出動態裝入程式(ld.so)所需的連線與快取檔案.快取檔案預設為/etc/ld.so.cache,此檔案保存已排好序的動態連結庫名字列表.

ldconfig通常在系統啟動時執行,而當使用者安裝了一個新的動態連結庫時,就需要手動執行這個指令。

ldconfig指令參數說明:

1、-v或–verbose:使用此選項時,ldconfig將顯示正在掃描的目錄及搜尋到的動態連結函式庫,還有它所建立的連線的名字.

2、-n :用此選項時,ldconfig僅掃描命令列指定的目錄,不掃描預設目錄(/lib,/usr/lib),也不掃描設定檔/etc/ld.so.conf所列的目錄.

3、-N :此選項指示ldconfig不重建快取檔案(/etc/ld.so.cache).若未使用-X選項,ldconfig照常更新檔案的連線.

4、-X : 此選項指示ldconfig不更新檔案的連線.若未使用-N選項,則快取檔案正常更新.

5 、-f CONF : 此選項指定動態連結庫的設定檔為CONF,系統預設為/etc/ld.so.conf.

6、-C CACHE :此選項指定產生的快取檔案為CACHE ,系統預設的是/etc/ld.so.cache,此檔案存放已排好序的可共享的動態連結庫的清單.

7、-r ROOT :此選項改變應用程式的根目錄為ROOT(是呼叫chroot函數實現的).選擇此項時,系統預設的設定檔/etc/ld.so.conf,實際對應的為ROOT/etc/ld.so.conf.如用-r/ usr/zzz時,開啟設定檔/etc/ld.so.conf時,實際開啟的是/usr/zzz/etc/ld.so.conf檔.用此選項,可以大幅增加動態連結庫管理的彈性.

8、-l :通常情況下,ldconfig搜尋動態連結函式庫時將自動建立動態連結函式庫的連線.選擇此項目時,將進入專家模式,需要手動設定連線.一般使用者不用此項目.

9、-p或–print-cache :此選項指示ldconfig列印出目前快取檔案所儲存的所有共用程式庫的名字.

10、-c FORMAT 或–format =FORMAT :此選項用於指定快取檔案所使用的格式,共有三種:ld(舊格式),new(新格式)和compat(相容格式,此為預設格式).

11、 -V : 此選項印出ldconfig的版本資訊,而後退出.

12、- 或--help 或–usage : 這三個選項作用相同,都是讓ldconfig列印出其幫助資訊,而後退出.

ldconfig要注意的地方:

1、往/lib和/usr/lib裡面加東西,是不用修改/etc/ld.so.conf檔的,但是新增完後需要呼叫下ldconfig,不然新增的library會找不到。

2、如果新增的library不在/lib和/usr/lib裡面的話,就需要修改/etc/ld.so.conf文件,往該文件追加library所在的路徑,然後也需要重新調用下ldconfig命令。或在/etc/ld.so.conf.d/下方新增*.conf的檔案並追加library的路徑,然後執行ldconfig。例如在安裝MySQL的時候,其函式庫檔案/usr/local/mysql/lib,就需要追加到/etc/ld.so.conf檔中。指令如下:

# echo "/usr/local/mysql/lib" >>/etc/ld.so.conf
# ldconfig -v | grep mysql

查看快取檔案所儲存的所有共用程式庫

# ldconfig -p

3、如果新增的library不在/lib或/usr/lib下,且沒有權限操作寫入/etc/ ld.so.conf檔的話,這時只需要將路徑放到LD_LIBRARY_PATH環境變更就可以了。

可以用指令export 來暫時生效

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

以上做法,只是暫時設定變數LD_LIBRARY_PATH ,下次開機這個變數會失效;如何把這個值持續寫到LD_LIBRARY_PATH 裡面呢?

我們可以在~/.bashrc~/.bash_profile 中加入export 語句,前者在每次登陸和每次開啟shell 都讀取一次,後者只在登陸時讀取一次。我的習慣是加到~/.bashrc 中.在該檔案的未尾,可採用如下語句來使設定生效:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

以上是bash#配置環境變數的格式csh的格式有所不同:

setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${my_HOME}/lib

修改完後,記得關掉目前終端並重新開啟一個新的終端,從而使上面的配置生效。

推薦學習:《linux影片教學

以上是linux ldconfig是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn