Linux動態庫,靜態庫

2021-10-08 17:38:25 字數 1221 閱讀 1853

1.庫是什麼?

庫是一種可執行**的二進位制形式,可以被作業系統載入記憶體執行。就是將源**轉化為二進位制格式的源**,相當於進行了加密,別人可以使用庫,但是看不到庫中的內容。

2.靜態庫:

靜態函式庫時在程式執行之前(編譯)就加入到目標程式中去了

linux中命名系統中靜態庫庫的規則:

靜態庫檔名的命名方式是「lib***.a」,庫名前加」lib」,字尾用」.a」,「***」為靜態庫名。

優缺點:

動態函式庫是在程式執行的時候動態(臨時)由目標程式去呼叫

linux中命名系統中動態庫庫的規則:

優缺點:

靜態庫的製作:格式***.a

第一步:把點c檔案生成.o檔案

gcc  ***.c  -c  ***.o
第二步:把 .o 檔案生成***.a 靜態庫檔案

ar rcs 靜態庫的名字   原材料

ar rcs libtest.a a.o b.o

動態庫的製作:格式***.so

gcc  -shared   -fpic  .c檔案  -o  動態庫名

gcc -shared -fpic test.c -o libtest.so

-shared : 指定生成動態庫

-fpic: 作用於編譯階段,在生成目標檔案時就得使用該選項,以生成位置無關**

5.庫的使用

靜態庫的使用:

gcc  test.c  -ltest   -l.

/-o target

-ltest : 「-l」 是生成目標檔案要用的庫,庫名砍頭去尾

-l : 告訴gcc編譯器從-l指定的路徑去找庫。預設是從/user/lib 或者 /user/local/lib去找

動態庫的使用和靜態庫一樣

帶動態庫的程式,可以指定該程式執行時候在" ld_library_path "s\所指定的路徑去找庫檔案

export  ld_library_path =

"/home/pi/back/test"

自己指定路徑

linux 靜態庫 動態庫

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

linux 靜態庫 動態庫

linux支援兩種庫的型別 靜態庫和動態庫 共享庫 1.linux靜態庫和動態庫的命名規則 靜態函式庫 lib a 動態函式庫 lib so 這些庫檔案都是由 o檔案生成的 動態庫 程式執行過程中進行連線。可執行檔案 庫檔案 靜態庫 編譯時進行連線。庫檔案 的複製貼上過程。程式執行時先檢查依賴的庫檔...

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...