靜態庫
產生庫: 寫若干個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...