靜態庫和動態庫的建立

2021-08-10 17:31:00 字數 1061 閱讀 6157

靜態庫的建立步驟:

1:編輯要生成的庫檔案:vim add.c(在這裡實現a+b的功能)

2:將庫檔案編譯成目標檔案.ogcc -c add.c -o add.o

3:將目標檔案生成靜態庫ar rcs libadd.a add.o(lib是字首,add.a是想要生成的靜態庫的名字)

以上已經建立好了靜態庫。

4:編輯呼叫庫函式vim test.c

5:將原始檔編譯成可執行檔案gcc -static(不加預設是動態庫)test.c -l(庫檔名) -l(庫檔案的路徑)

動態庫的建立步驟:

1:編輯要生成的庫檔案:vim add.c(在這裡實現a+b的功能)

2:將庫檔案編譯成目標檔案.ogcc -c add.c -fpic

3:將目標檔案生成動態庫gcc add.o -o libadd.so -shared

以上已經建立好了動態庫。

4:編輯呼叫庫函式vim test.c

5:將原始檔編譯成可執行檔案gcc test.c ./libadd.so(動態庫檔案)

靜態庫和動態庫的區別

1:靜態庫以.a作為字尾,動態庫以.so作為字尾。

2:建立的是靜態庫時,把libadd.a檔案mv到其他地方 test的可執行檔案還能執行,

建立的是動態庫時,把libadd.so檔案mv到其他地方 test的可執行檔案不能執行。

原因:當時用靜態庫時,鏈結器會找出程式中需要的庫函式,然後把它們拷貝到可執行檔案中去(找到一次就拷貝一次==>就會有重複),一旦鏈結成功,靜態庫就不需要了,因為可執行檔案內已有庫函式。(就是把libadd.a檔案mv到其他地方 test的可執行檔案還能執行)

使用動態庫時,聯結器是在可執行檔案裡留下乙個標記,當執行可執行檔案時,首先載入動態庫。(就是把libadd.so檔案mv到其他地方 test的可執行檔案不能執行,路徑變了)

建立靜態庫和動態庫

今天是2014年5月25日。首先我想說一下在linux作業系統中,如何檢視程序和檢視程序樹。要想檢視程序只需敲入ps aux 即可,也可用 top指令,至於它倆的具體區別後面在介紹。用pstree 來檢視程序樹。這裡面有子程序和父程序,一定要會看。下來教你如何匯出核心資訊,和檢視映像。基於剛才的ps...

靜態庫和動態庫的建立

最近學習了一下靜態庫和動態庫的建立,這裡是我學習後知道的建立方法,在這裡和大家分享以下,如果有不同意見或者更好的建議希望大家批評指正 首先我們先來說以下靜態庫和動態庫 1.靜態庫 首先靜態庫的名字是以.s為字尾來命名的,靜態庫的作用是在函式的呼叫過程中將庫中的所有東西拷貝到目標 所在的檔案中,所以它...

linux建立靜態庫和動態庫

2015新年第一篇部落格,哈哈,這個2月還沒寫過部落格呢,從現在開始繼續!一 建立靜態庫 在本例中將建立乙個小型靜態函式庫libfoo,包含兩個函式bill fred 1 編輯兩個檔案bill.c和fred.c bill.c include void bill fred.c include void...