Unix Linux下的靜態庫和動態庫

2021-06-26 23:14:27 字數 893 閱讀 4639

靜態庫

產生庫: 寫若干個c檔案(函式或者全域性變數,不應有main),編譯(gcc -c ...),

打包成庫(ar -r lib***.a若干個.o),寫乙個.h檔案(函式或者全域性變數的宣告)

產生可執行檔案

寫c程式,#include庫的標頭檔案,可以使用庫裡面的函式和變數,gcc lib***.a c程式檔案,

或者gcc -l*** -l庫檔案所在的目錄  c程式檔案,或者設定環境變數library_path值為庫檔案所在目錄從而省略-l選項。

執行可執行檔案:執行可執行檔案

動態庫

產生庫:寫若干個c檔案(函式或者全域性變數,不應有main),

gcc [-fpic] -shared -o lib***.so ...(若干個c程式檔案),

產生可執行檔案:

寫c程式(#include庫的標頭檔案,可以使用庫中的函式和變數),

gcc -l*** -l庫檔案所在目錄 c程式檔案,

或者設定環境變數libaray_path的值為庫檔案所在目錄從而省略-l選項 。

執行可執行檔案:

先把庫檔案複製到/lib或者/usr/lib目錄下或者設定環境變數ld_library_path值作為庫檔案所在目錄,再執行可執行檔案。

~/.bashrc 

path=$path:.

export library_path=$library_path:庫檔案目錄

export ld_library_path=$ld_library_path:動態庫檔案目錄

nm:檢視動態庫中的檔案

公升級庫:把「產生庫」的過程重複一遍。如果是動態庫,可執行檔案會自動使用新庫,如果是靜態庫,還需要重複「產生可執行檔案」的過程,新的可執行檔案使用的才是新庫。

Unix Linux程式設計 靜態庫和動態庫

構建程式的一種方式是簡單地將每乙個原始檔編譯成目標檔案,然後將這些目標檔案鏈結在一起組成乙個可執行程式,如下所示 在很多情況下,源 檔案也可以被多個程式共享。因此要降低工作量的第一步就是將這些源 檔案只編譯一次,然後在需要的時候將它們鏈結進不同的可執行檔案中。雖然這項技術能夠節省編譯時間,但其缺點是...

linux下的靜態庫和動態庫

庫是什麼?在我們實際程式設計中,經常會引入各種庫函式,那麼庫是什麼?從本質上來說是一種可執行 的二進位制格式,可以被載入記憶體中執行。庫分靜態庫和動態庫兩種。靜態庫 linux下靜態庫的名字一般是lib a,為庫的名字。利用靜態函式庫編譯成的檔案比較大,因為整個函式庫的所有資料都會被整合進目標 中,...

linux下的靜態庫和動態庫

意義 為了避免 的重寫率,我們可以將已經寫好的 形成乙個庫,當我們再次用到的時候可以直接呼叫,而不是重新去寫,即 站在巨人的肩膀上 linux下有兩種庫 一 靜態庫 準備工作 int swap int x,int y include int main 1 將我們需要的函式生成乙個.o 檔案 root...