Ubuntu的目錄與第三方庫

2021-07-10 03:05:57 字數 2319 閱讀 5560

1.ubuntu目錄結構

在ubuntu使用記錄(常用命令與目錄樹)中我總結了一些關於ubuntu/linux的目錄的一些知識,這裡回顧一下。

軟體主要分為3類,可以用which命令檢視,乙個軟體/命令的位置

①/sbin

表示系統的一些程式,比如shutdown

②/bin

表示一些可以用在bash上面的命令,比如ps,ls等

③/usr/bin

表示其他安裝的軟體,比如我們需要apt-get install安裝的軟體,比如firefox,gcc,codeblocks等等

2.庫檔案

總結自:

(1)什麼是庫

簡單說,庫就是一些標頭檔案與庫檔案(可能包括靜態庫與動態庫兩種)的集合。

庫檔案通過標頭檔案向外匯出介面,標頭檔案中有函式的宣告,庫檔案中是對應的實現。

(2)位置

①安裝的第三方軟體

/usr/bin                             可執行檔案

/usr/lib                              可執行檔案的庫檔案

/usr/include                     可執行檔案的標頭檔案

②安裝的第三方庫

/usr/local/bin                   安裝的庫的一些測試程式

/usr/local/lib                    安裝的庫的庫檔案

/usr/local/include            安裝的庫的標頭檔案

(3)靜態庫

①格式.a

②載入階段

編譯四大階段的鏈結階段

③本質

一系列目標檔案(.o檔案)的集合

④特點

程式在執行時與函式庫再無瓜葛,移植方便。

如果庫有更新,且要載入新庫,需重新編譯整個應用程式。

⑤使用

在ubuntu/linux下面,只需在編譯的時候指定搜尋路徑與靜態庫名

-l         表示要連線的庫所在目錄

-l          表示鏈結時需要的靜態庫(比如libev的靜態庫檔案libev.a在編譯的時候,只需要-lev即可)

(4)動態庫

①格式

.so②載入階段

動態庫是在程式執行時,才被載入到記憶體中。

多個程式如果使用相同的動態庫,在記憶體中只會存在乙份拷貝。

③特點

可以實現程序間資源共享,因此也叫坐共享庫。

使得程式公升級變地簡單,只需要更新動態庫檔案即可。

甚至可以做到鏈結載入完全由程式設計師在程式**中控制(顯式呼叫)。

④使用

由於涉及到編譯以及執行兩個階段的庫檔案查詢,所以有兩個需要注意的地方。

a。編譯階段

一樣的-l和-l

b。執行階段

由於需要在執行的時候也要找到動態庫檔案的位置。

這個是在/etc/ld.so.cache檔案裡面記載的,系統預設在這個檔案裡面記載有/lib以及/usr/lib

所以,如果你是安裝的第三方庫,或者是自己生成了乙個動態庫,你的庫檔案是在/usr/local/lib中或者其他地方,系統是預設找不到的。

這個時候,編譯沒有問題,可是一旦執行,系統就會提示找不到某某庫檔案。

解決辦法是修改/etc/ld.so.cache,但是注意,由於這不是乙個配置檔案,所以不能直接修改。

要通過/etc/ld.so.conf來修改,假設我安裝了第三方庫libev,庫的目錄是/usr/local/lib,那麼我就要這樣做。

$vim /etc/ls.so.conf

另起一行,加上/usr/local/lib

$ldconfig,該命令會根據ld.so.conf檔案重建ld.so.cache檔案,這個時候就能愉快地使用第三方庫啦!

⑤補充

ldd命令,ldd 某應用程式

可以檢視該應用程式依賴的動態鏈結庫。

ubuntu第三方庫管理筆記

linux 檢視版本號 pkg config modversion opencv ls usr bin python 檢視版本路徑 which python3 檢視庫資訊 apt cache show lib sudo find iname opencv locate lib sudo apt in...

PyThon第三方庫

本文 自 戀花蝶的部落格 今天公司停電,沒上班。跑上來更新個部落格,跟大家分享一下我常用的幾個第三方 python 庫。python 語言之所以能夠如此流行,除了本身內建許多程式庫來保障快速開發之外,目不睱接的第三方庫也是一大主因。結合我目前的工作 網遊開發 我常用的幾個第三方庫如下 wxpytho...

lua第三方庫

luacom 支援com呼叫 luadoc 支援lua 的文件生成 luaexpat 支援xml解析 luafilesystem 檔案系統訪問 lualogging 基於log4j的日誌 luaprofiler 效能測試工具 luasocket 網路庫,支援http,ftp,smtp,mime,ur...