執行環境Ubuntu 10.04.4 LTS 與kernel 2.6.32-320-generic可由lsb_release -a 與 uname -r查看


 


ldconfig的用法很簡單,但重要的是libray & PATH的觀念


為什麼libaray需要管理?因為不論是軟體執行或Build 你的Source Code在這過程都有可能會需要連結到需要的函式庫

函式庫又分為動態連結Dynamic Linker和靜態連結Static Linker


在Linux 中動態與靜態的副檔名與差別簡述

(如果有興趣找任何的程式語言書籍應該都會介紹到compile過程與libary & header file吧)

--------------------------------------------------------------------------------------------------------------------

動態連結檔會以*.so 或者 *.so.* 來表示 , compile出來的binary executable file較小 但執行速度較慢,因為他在執行時才會載入需要的函式庫


靜態連結為*.a,  compile出來的binary executable file較大 但執行速度較快,因為它需要的lib都包在自己身上拉


透過圖片解釋



PS 雖然英文有點破但應該可以了解我想表達甚麼吧


如果系統不知道你所安裝的套件、工具、或是Application Programming Interface的函式庫安裝位置當執行程式時就會產生錯誤因為找不到mach的lib


可以透過幾種方法和工具來告知Kernel,ldconfig就是其中之一

ldconfig會根據/etc/ld.so.conf內容去搜尋並將函式庫載入main memory提高執行速度


方法很簡單...要先知道你的函式庫安裝後的位置在哪

(可以透過pkg-config 得知,可以參考另一篇pkg-config說明與用法)

之後把lib路徑寫入/etc/ld.so.conf.d/XXX.conf檔案後執行ldconfig就完成了

以OpenCV為例,

sudo vi  /etc/ld.so.conf.d/opencv.conf

在檔案內寫入 /usr/local/lib 後存檔

sudo ldconfig

沒出現任何訊息是正常的,要更詳細了解ldconfig的用法man一下就好了



在當兵時時間較多就想說找本書看看充實一下自己,所以買了

鳥哥Linux私房菜基礎學習篇,當時對於linux是完全不了解

雖然書上寫得很詳細,但對於完全沒接觸過的東西要完全了解也實在有點困難@@

在Porting過程要懂得東西還真不少,Library函式庫的管理就是其中一大重點阿

回來看看鳥哥的書就了解原來是這樣有點被點醒的感覺

感謝鳥哥對於想進入Linux的人提供一個很好的入口

 


參考資料;

鳥哥Linux私房菜基礎學習篇

arrow
arrow
    全站熱搜

    viclin 發表在 痞客邦 留言(1) 人氣()