1. 程式人生 > >linux中ldconfig(動態連結庫管理命令)的使用介紹

linux中ldconfig(動態連結庫管理命令)的使用介紹

原文:http://www.cnblogs.com/yymn/p/5618493.html

ldconfig是一個動態連結庫管理命令,其目的為了讓動態連結庫為系統所共享。

ldconfig的主要用途

預設搜尋/lilb和/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命令。比如在安裝MySQL的時候,其庫檔案/usr/local/mysql/lib,就需要追加到/etc/ld.so.conf檔案中。命令如下:

# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf

# ldconfig -v | grep mysql

3、如果新增的library不在/lib或/usr/lib下,但是卻沒有許可權操作寫/etc/ld.so.conf檔案的話,這時就需要往export裡寫一個全域性變數LD_LIBRARY_PATH,就可以了。


相關推薦

linuxldconfig動態連結管理命令的使用介紹

原文:http://www.cnblogs.com/yymn/p/5618493.html ldconfig是一個動態連結庫管理命令,其目的為了讓動態連結庫為系統所共享。 ldconfig的主要用途: 預設搜尋/lilb和/usr/lib,以及配置檔案/etc/l

Linux命令新增到PATH及PA LD_LIBRARY_PATH用於指定查詢共享動態連結時除了預設路徑之外的其他路徑

Linux將命令新增到PATH中部落格分類:linuxLinuxApacheBash簡單說PATH就是一組路徑的字串變數,當你輸入的命令不帶任何路徑時,LINUX會在PATH記錄的路徑中查詢該命令。有的話則執行,不存在則提示命令找不到。比如在根目錄/下可以輸入命令ls,在/u

java呼叫本地動態連結*.DLL的兩種方式詳解和not found library、打包成jar,war包dll無法載入等等問題解決辦法

我們經常會遇到需要java呼叫c++的案例,這裡就java呼叫DLL本地動態連結庫兩種方式,和載入過程中遇到的問題進行詳細介紹 1、通過System.loadLibrary("dll名稱,不需要字尾名

python呼叫 C#動態連結問題記錄

程式[摘自https://blog.csdn.net/LTG01/article/details/80700513]  import clr clr.FindAssembly("PythonNetTest.dll") ## 載入c#dll檔案 from PythonNetTest import *

Linux下如何檢視動態連結so檔案的依賴

最近專案用到了opencv,在測試環境編譯後生成了so檔案,在測試環境執行正常後準備在預發環境進行上線前的測試 但是System.loadLibrary(Core.NATIVE_LIBRARY_NAM

linux找不到動態連結 .so檔案的解決方法

如果使用自己手動生成的動態連結庫.so檔案,但是這個.so檔案,沒有加入庫檔案搜尋路勁中,程式執行時可能會出現找不到動態連結庫的情形。 可以通過ldd命名來檢視可執行檔案依賴的動態連結庫,如下(其中D為可執行程式):  其中的libjson_linux-gcc-4.6_libmt.so cannot

linux下go的動態連結的使用

在使用lua進行伺服器端遊戲邏輯開發時,發現了LUA的各種不方便的地方,不能編譯檢查,不能斷點除錯,筆誤的函式和變數不提示出錯等等,所以有了全部使用go來做伺服器端開發的想法。 如果不需要熱更新,那使用go開發伺服器邏輯是很輕鬆的,而遊戲伺服器特別是頁遊,一般都需要支援熱更

【C++】linux下CMake生成動態連結,g++包含生成動態連結

一、前言   由於專案中要用到java呼叫C++的庫檔案,於是需要在linux下編譯連線生成動態庫,然後根據Recast官方包要先CMake生成編譯,然後在包含到自己實現的檔案,網上查了半天,坑爹沒有全面的,東拼西湊終於才明白原理,於是總結記錄分享如下。 二、CMake生

AIX系統常用命令TCP/IP網路管理命令

9.1、主機名修改命令hostname/uname -n 顯示主機名uname -x /uname -a /uname -u 顯示作業系統的詳細資訊,顯示系統IDhostname 主機名,這樣改的主機名只能保持到下次重起smit hostname 或chdev -l inet0 -a hostnam

Linux基礎知識系統日誌的相關命令

一、系統日誌的採集規則 日誌可以直接看出系統中的錯誤,日誌在記憶體裡,由服務決定 vim /etc/rsyslog.conf 檢視並修改採集日誌檔案配置,為了讓我們把日誌採集到指定位置。 日誌採集格式:日誌型別.日誌級別 日誌存放檔名稱 1.日誌型別: auth 使用

Linux 動態連結的版本號以及ldconfig

動態連結庫的三個名字 1. realname, 真正的名字,一般情況下如果你有版本,應該在後面加上lib[libraryname].so.[version] eg: libtest.so.1.0.0 2. soname, 在編譯動態庫的時候指定的名字,這個名字將會被新增到

python呼叫動態連結C++,linux

1,建立並編譯C++程式 #include <fstream> #include <assert.h> #include <malloc.h> #incl

靜態連結的編譯與使用 linux下的動態連結和靜態連結到底是個什麼鬼?靜態連結的編譯與使用

linux下的動態連結庫和靜態連結庫到底是個什麼鬼?(一)靜態連結庫的編譯與使用       知識不等於技術,這句話真的是越工作的時間長越深有體會,學習到的知識只有不斷的實踐,才成真正在自已的心裡紮下根,成為自身的一部分,所以無論如何,我希望我的部落格可以

Linux下使用QT編寫和呼叫動態連結.so檔案

Linux下Qt建立和呼叫共享庫檔案.so 費了點功夫,總算get了編寫共享庫(Shared Library,Windows下稱為“動態連結庫”,即Dynamic Link Library)和呼叫的這個新技能! 動態連結庫的好處是不言而喻的,一個稍微複雜一點的程式,頂層設計的時候良好

Linux,.a和.so,其實就是靜態連結動態連結

詳細查了一下,.a與.so的區別,其實就是靜態連結庫與動態連結庫。有一篇博文,很詳細,附上鍊接:http://blog.csdn.net/nieyinyin/article/details/6890557   Linux下的.so是基於Linux下的動態連結,其功能和作用類

Linux下執行時呼叫動態連結.so的三種方法筆記

在/etc/ld.so.conf.d/下建立xxx.conf,在文字中加入.so所在路徑,如:/usr/xxx等等,然後使用相應ldconfig命令使之生效。 將.so所在路徑新增為LD_LIBRARY_PATH環境變數。 在編譯命令中使用-Wl,-rpath

Linux動態連結同名符號裝載問題

上一篇《Linux動態連結庫同名符號裝載問題(一)》中提到了動態連結的一些問題,本文主要討論動態載入時符號衝突的問題。PART1:RTLD_DEEPBIND開啟動態連結導致段錯誤的現象可執行程式A通過dlopen動態載入library.so,有可能出現library.so中和

解決Oracle缺少動態連結cannot open shared object file: No such file o;解決 Linuxpython指令碼執行無問題,配置crontab定時任務報錯

注:該問題的本質是:缺少動態連結庫 20181030更: 在另一臺伺服器再次遇到類似的問題,也是直接執行python指令碼無問題,在crontab中報錯: ImportError: libclntsh.so.11.1: cannot open shared ob

linux下生成動態連結並使用使用cmake

使用cmake生成庫主要要注意三個資料夾 (1)原始檔資料夾 (2)中間資料夾(編譯生成的.o等檔案的資料夾) (3)安裝資料夾(最終可用的庫所在的資料夾) 使用庫的步驟 (1)在工程檔案中包括庫函式的標頭檔案(可為絕對路徑,也可配置全域性環境變數用相對路徑)

程式顯式呼叫和隱式呼叫linux動態連結*.so的區別。

        我們知道,動態庫相比靜態庫的區別是:靜態庫是編譯時就載入到可執行檔案中的,而動態庫是在程式執行時完成載入的,所以使用動態庫的程式的體積要比使用靜態庫程式的體積小,並且使用動態庫的程式在執行時必須依賴所使用的動態庫檔案(.so檔案),而使用靜態庫的程式一旦編譯好