linux下編譯動態載入庫,靜態庫等

2021-07-28 04:58:24 字數 1302 閱讀 1965

乾貨直接來:linux下靜態庫、動態庫的makefile建立。

gcc -fpic  -c add.c ../include(放標頭檔案) 生成add.o目標檔案

gcc -shared -o libadd.so add.o 生成libadd.so動態庫 這個庫的名是add

將這個庫放在根目錄的lib檔案裡

gcc -o main main.c –l add ../include(放標頭檔案) (注意這裡寫的庫名,沒有lib和.so)

動態庫與靜態庫比較:

動態庫只在執行的時候才被鏈結使用

動態庫可以被多個程式使用,所以也稱共享庫

靜態庫將會整合大程式中,程式執行是不用夾在靜態庫,因此靜態庫會是程式臃腫難以公升級,但比較容易部署

動態庫便於公升級,但不容易部署

建立四個檔案 bin(可執行檔案),lib(庫),include(標頭檔案),src(放原始檔)

這裡的起的庫明為add

在src檔案中執行

1)gcc -c add.c //編譯add.c原始檔生成add.o目標檔案

2)ar crsv ../lib/ libadd.a add.o //對目標檔案*.o進行歸檔,生成lib*.a, 把這個生成檔案放在lib裡

3)gcc -o main main.c -l(大些的愛偶,放庫的路徑)../lib   –l(小寫的愛偶,庫名為add) add –i(大寫的i) ../include(放標頭檔案)

三個檔案 bin(可執行檔案),include(標頭檔案),src(放原始檔)

目標項               依賴項

./bin/main:./src/my_add.o ./src/my_minus.o ./src/main.o    //將*.o檔案 生成可執行檔案

g++  ./src/my_add.o ./src/my_minus.o ./src/main.o -o ./bin/main -i ./include

./src/my_add.o:./src/my_add.cpp

g++ -c ./src/my_add.cpp -o ./src/my_add.o -i ./include // 生成my_add.o

./src/my_minus.o:./src/my_minus.cpp

g++ -c ./src/my_minus.cpp -o ./src/my_minus.o -i ./include //生成my_minus.o

./src/main.o:./src/main.cpp

g++ -c ./src/main.cpp -o ./src/main.o -i ./include   //生成main.o

交叉編譯環境下靜態庫動態庫的載入

現在做的這個專案用到的是開發板是mips晶元,所以無論是在編譯我自己的源 時,還是對方的靜態庫,我都要使用mips的gcc,也就是在我的pc裝好交叉編譯環境。交叉編譯環境的概念 在pc平台上裝上特定嵌入式開發的編譯環境,對於嵌入式開發的源 可以用其編譯環境在pc平台上編譯源 交叉編譯時候如何配置連線...

Linux下的靜態庫 動態庫和動態載入庫

linux下可以建立兩種型別的庫 靜態庫 a 在鏈結期間被應用程式直接鏈結進可執行檔案 動態鏈結庫 so 動態庫還分為兩種用法 a 應用程式執行期間鏈結動態庫,但是在編譯期間宣告動態庫的存在,也就是說這種動態庫必須在編譯時對編譯器可見,但編譯器卻不將此種庫編譯進可執行檔案 b 在執行期間,動態載入和...

Linux下編譯靜態庫 a 和動態庫 so

靜態庫 在linux環境中,使用ar命令建立靜態庫檔案.如下是命令的選項 d 從指定的靜態庫檔案中刪除檔案 m 把檔案移動到指定的靜態庫檔案中 p 把靜態庫檔案中指定的檔案輸出到標準輸出 q 快速地把檔案追加到靜態庫檔案中 r 把檔案插入到靜態庫檔案中 t 顯示靜態庫檔案中檔案的列表 x 從靜態庫檔...