ldconfig命令用法筆記

ldconfig
ldconfig是一個動態鏈接庫管理命令,爲了讓動態鏈接庫爲系統所共享,還需運行動態鏈接庫的管理命令–ldconfig。 ldconfig 命令的用途,主要是在默認搜尋目錄(/lib和/usr/lib)以及動態庫配置文件/etc/ld.so.conf內所列的目錄下,搜索出可共享的動態 鏈接庫(格式如前介紹,lib*.so*),進而創建出動態裝入程序(ld.so)所需的連接和緩存文件.緩存文件默認爲 /etc/ld.so.cache,此文件保存已排好序的動態鏈接庫名字列表.

linux下的共享庫機制採用了類似於高速緩存的機制,將庫信息保存在/etc/ld.so.cache裏邊。

程序連接的時候首先從這個文件裏邊查找,然後再到ld.so.conf的路徑裏邊去詳細找。

這就是爲什麼修改了ld.so.conf要重新運行一下ldconfig的原因

補充一點,ldconfig在/sbin裏面。

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才能在 程序運行時被找到。

/home/dragon/program/opencv-3.1.0/build/lib

如果想在這兩個目錄以外放lib,但是又不想在/etc/ld.so.conf中加東西(或者是沒有權限加東西)。那也可以,就是export一個全局變 量LD_LIBRARY_PATH,然後運行程序的時候就會去這個目錄中找library。一般來講這只是一種臨時的解決方案,在沒有權限或臨時需要的時候使用。

ldconfig做的這些東西都與運行程序時有關,跟編譯時一點關係都沒有。編譯的時候還是該加-L就得加,不要混淆了。

總之,就是不管做了什麼關於library的變動後,最好都ldconfig一下,不然會出現一些意想不到的結果。不會花太多的時間,但是會省很多的事。
ldconfig通常在系統啓動時運行,而當用戶安裝了一個新的動態鏈接庫時,就需要手工運行這個命令.

ldconfig命令行用法如下:
ldconfig [-v|–verbose] [-n] [-N] [-X] [-f CONF] [-C CACHE] [-r ROOT] [-l] [-p|–print-cache]

[-c FORMAT] [–format=FORMAT] [-V] [-?|–help|–usage] path…

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打印出其幫助信息,而後退出.

linux下的共享庫機制採用了類似於高速緩存的機制,將庫信息保存在/etc/ld.so.cache裏邊。

程序連接的時候首先從這個文件裏邊查找,然後再到ld.so.conf的路徑裏邊去詳細找。

這就是爲什麼修改了ld.so.conf要重新運行一下ldconfig的原因

補充一點,ldconfig在/sbin裏面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章