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