鏈結器的意義linux 下靜態庫的建立和使用
test.c
#include
extern char* name();
extern int add(
int a,
int b)
;int main(
)
slib.c
char
*name()
intadd
(int a,
int b)
gcc -c slib.c -o slib.o
ar -q slib.a -o slib.o
gcc test.c slib.a -o test.out
輸出:name static lib
result: 5
■stubx
: 告訴編譯器動態庫中可使用的內容
linux 下動態庫的建立和使用
○ dlopen:開啟動態庫檔案
○ dlclose:關閉動態庫檔案
test.c
#include
#include
extern char* name();
extern int add(
int a,
int b)
;int main(
)
dlclose(pdlib);}
else
return0;
}
dlib.c
char
*name()
intadd
(int a,
int b)
gcc -shared dlib.c -o dlib.so
gcc test.c -ldl -o test.out
輸出:name static lib
result: 5
第20課 鏈結過程簡介
在具體工作中,每個軟體專案都有很多個.c原始檔,每個.c原始檔經過編譯後生成.o格式的目標檔案,那麼這些.o檔案如何生成最終的可執行程式呢?這裡就要引入c語言的鏈結器了。鏈結器的主要作用就是處理各個模組 目標檔案和庫檔案 之間的相互引用,使得各個模組之間能夠正確的銜接。由鏈結器在鏈結時將庫的內容直接...
C語言編譯和鏈結過程簡介
一 編譯過程簡介 編譯過程可以分為4部分內容組成 預處理器 編譯器 彙編器 鏈結器 1 預處理器 1 處理所有的注釋,以空格代替 2 講所有的 define刪除,並且展開所有的巨集定義 3 處理條件編譯指令 if,ifdef elif,else endif 4 處理 include,展開檔案包含 5...
C語言學習記錄20 鏈結過程
問題 工程中的每個c語言原始檔被編譯後生產目標檔案,這些檔案如何生成最終的可執行程式?鏈結器的主要作用是把各個模組之間相互引用的部分處理好,使得模組之間能夠爭取的銜接。靜態鏈結 由鏈結器在鏈結時將庫的內容直接加入到可執行程式中。在linux靜態庫下的建立和使用 1 編譯靜態庫原始碼 gcc c li...