C語言高階剖析 20 鏈結過程簡介

2021-09-10 10:00:36 字數 1152 閱讀 6263

鏈結器的意義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...