轉載自 這裡
前言 :
在 Linux 系統上所執行的程式都會使用到函式庫,而依照應用程式與函式庫連結的方式,可區分為靜態函式庫 (Static Libraries) 及動態函式庫 (Dynamic Link Libraries、Shared Libraries) ,這兩者其實是很好區別的。靜態函式庫 (通常為 xx.a) 裡的函式原始碼需要被編譯到主程式裡頭,所以主程式會顯得比較臃腫些,但好處是該程式可以獨立執行 ﹔動態函式庫 (通常為 xx.so,如您看到的是 xx.so.2.1 之類的,那個 2.1 就是版本囉 ) 則不需整個被編譯到主程式裡邊,只需在程式的原始碼裡設計去呼叫動態函式庫即可。在 Linux 中所執行的程式幾乎都是使用動態連結資料庫.
傳統函式庫位置 :
一般傳統的函式庫是安置在 /lib 及 /usr/lib 目錄中,而提供系統來搜尋的函式庫,其所放置的目錄是定義在 /etc/ld.so.conf 裡。當執行 ldconfig 指令時,會先去讀取 /etc/ld.so.conf,以找出函式庫所放置的目錄位置,然後才能將這些函式庫資料寫入 cache 內,並存放一份在 /etc/ld.so.cache 中。而我們在執行一支程式時,就會由 ld.so 這個動態連結器 (dynamic linker) 程式,到 cache 內去尋找執行程式所需的函式,以提供程式做動態連結.
不過您要是看過 /etc/ld.so.conf,會發現 /lib 及 /usr/lib 並沒有定義在 ld.so.conf 內,因為這兩個目錄是內定值,所以不需要做設定啦 ! 最後如果您有設定 LD_LIBRARY_PATH 這個環境變數的話,其所定義的目錄也會被讀入.
ldconfig 指令介紹 :
如果哪天您函式庫所存放的目錄有所異動,請記得修改 /etc/ld.so.conf,然後再執行 ldconfig 指令,這樣才可以更新 cache 內的資料。以下我們稍作整理:
至於要查詢所執行的程式使用了哪些 DLL,則執行 ldd 指令即可 :
前言 :
在 Linux 系統上所執行的程式都會使用到函式庫,而依照應用程式與函式庫連結的方式,可區分為靜態函式庫 (Static Libraries) 及動態函式庫 (Dynamic Link Libraries、Shared Libraries) ,這兩者其實是很好區別的。靜態函式庫 (通常為 xx.a) 裡的函式原始碼需要被編譯到主程式裡頭,所以主程式會顯得比較臃腫些,但好處是該程式可以獨立執行 ﹔動態函式庫 (通常為 xx.so,如您看到的是 xx.so.2.1 之類的,那個 2.1 就是版本囉 ) 則不需整個被編譯到主程式裡邊,只需在程式的原始碼裡設計去呼叫動態函式庫即可。在 Linux 中所執行的程式幾乎都是使用動態連結資料庫.
傳統函式庫位置 :
一般傳統的函式庫是安置在 /lib 及 /usr/lib 目錄中,而提供系統來搜尋的函式庫,其所放置的目錄是定義在 /etc/ld.so.conf 裡。當執行 ldconfig 指令時,會先去讀取 /etc/ld.so.conf,以找出函式庫所放置的目錄位置,然後才能將這些函式庫資料寫入 cache 內,並存放一份在 /etc/ld.so.cache 中。而我們在執行一支程式時,就會由 ld.so 這個動態連結器 (dynamic linker) 程式,到 cache 內去尋找執行程式所需的函式,以提供程式做動態連結.
不過您要是看過 /etc/ld.so.conf,會發現 /lib 及 /usr/lib 並沒有定義在 ld.so.conf 內,因為這兩個目錄是內定值,所以不需要做設定啦 ! 最後如果您有設定 LD_LIBRARY_PATH 這個環境變數的話,其所定義的目錄也會被讀入.
ldconfig 指令介紹 :
如果哪天您函式庫所存放的目錄有所異動,請記得修改 /etc/ld.so.conf,然後再執行 ldconfig 指令,這樣才可以更新 cache 內的資料。以下我們稍作整理:
至於要查詢所執行的程式使用了哪些 DLL,則執行 ldd 指令即可 :
This message was edited 2 times. Last update was at 15/06/2010 16:51:09
沒有留言:
張貼留言