linux 靜態庫 動態庫

2021-06-17 20:26:32 字數 1509 閱讀 7051

linux支援兩種庫的型別:靜態庫和動態庫(共享庫)

1. linux靜態庫和動態庫的命名規則:

靜態函式庫:lib***.a

動態函式庫:lib***.so

這些庫檔案都是由*.o檔案生成的

動態庫:

程式執行過程中進行連線。可執行檔案+庫檔案

靜態庫:

編譯時進行連線。庫檔案**的複製貼上過程。

程式執行時先檢查依賴的庫檔案,並查詢出依賴的檔案庫路徑。

3. 靜態庫和動態庫的建立過程:

a) 建立靜態庫:

1、編譯生成目標檔案

gcc -c struct.c

2、建立靜態庫

ar  -rt  libstruct.a   file1.o file2.o

3、鏈結靜態鏈結庫,生成可執行檔案

gcc main.c 【-static -l.】 -lstruct -o main

b) 建立動態庫:

1.使用gcc編譯.c檔案的使用,使用-fpic標籤,然後在使用*.o檔案生成動態庫檔案的時候,傳遞-shared標籤給gcc,例子:

gcc  –fpic  –c  file1.c

gcc  -fpic  -c  file2.c  file3.c

gcc  –shared  -o libtest.so  file1.o  file2.o

這樣就建立了libtest.so動態庫檔案。

2.設定共享庫檔案的路徑:

export ld_library_path=$ld_librar_path:路徑

.sudo vim /etc/ld.so.conf 中新增庫檔案的絕對路徑,執行 sudo ldconfig

sudo mv libmath.so /usr/lib

3.連線編譯生成可執行檔案:

gcc math.c  -l.  -lmath  -o myout

ldd a.out 顯示庫檔案的查詢路徑

linux 靜態庫 動態庫

1.概念和區別 靜態庫就是在編譯過程中一些目標檔案的集合。靜態庫在程式鏈結的時候使用,鏈結器會將程式中使用到函式的 從庫檔案中拷貝到應用程式中。一旦鏈結完成,在執行程式的時候就不需要靜態庫了。由於每個使用靜態庫的應用程式都需要拷貝所用函式的 所以靜態鏈結的檔案會比較大。相對於靜態函式庫,動態函式庫在...

Linux動態庫,靜態庫

1.庫是什麼?庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。就是將源 轉化為二進位制格式的源 相當於進行了加密,別人可以使用庫,但是看不到庫中的內容。2.靜態庫 靜態函式庫時在程式執行之前 編譯 就加入到目標程式中去了 linux中命名系統中靜態庫庫的規則 靜態庫檔名的命名方式是 l...

linux 靜態庫和動態庫

1.生成方式 靜態庫 首先將原始檔編譯成目標檔案 gcc c test.c o test.o 然後生成靜態庫 ar rc libstatic.a test.o 共享庫 首先將原始檔編譯成目標檔案 gcc c test.c o test.o 生成共享庫 gcc fpic shared o libsha...