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