編譯鏈結庫的概念

2021-05-26 23:27:05 字數 398 閱讀 8291

預編譯: gcc -e hello.c -o hello.i(-e表示只進行預編譯,e必須大寫)

編譯:gcc -s hello.i -o hello.s  (-s表示只進行編譯)

gcc -s hello.c -o hello.s  (把預編譯和編譯一步執行完)

彙編:gcc -c hello.s -o hello.o(-c表示彙編)

gcc -c hello.c -o hello.o(把預編譯,編譯和彙編一步執行)

庫其實是一組目標檔案的包,就是一些最常用的**編譯成目標檔案後打包存放。

目標檔案從結構上講,它是已經編譯後的可執行檔案格式,只是還沒有經過鏈結的過程,其中可能有些符號或者有些位址還沒有被調整。其實它本身就是按照可執行檔案格式儲存的,只是跟真正的可執行檔案在結構上稍有不同。

動態鏈結庫的概念

動態鏈結庫,英文縮寫未.dll,能夠供多個應用程式同時使用的 或資料的集合,不是執行檔案,可供程式呼叫 動態鏈結庫的優點是更新某一動態鏈結庫時,不會影響到該應用程式的其他部分,該應該程式的其他模組不會受到影響。動態鏈結庫,可以實現資源共享,不同的應用程式應用同乙個.dll 方便更新或者修改,修改時只...

linux 編譯靜態鏈結庫和動態鏈結庫

我們通常把一些公用函式製作成函式庫,供其它程式使用。函式庫分為靜態庫和動態庫兩種。靜態庫在程式編譯時會被連線到目標 中,程式執行時將不再需要該靜態庫。動態庫在程式編譯時並不會被連線到目標 中,而是在程式執行是才被載入,因此在程式執行時還需要動態庫存在。本文主要通過舉例來說明在linux中如何建立靜態...

Linux 編譯靜態鏈結庫與動態鏈結庫的方法

hello.c include int main int argc,char argv 1 編譯生成可執行檔案 gcc o test hello.c 2 編譯生成目標檔案 gcc c o test.o hello.c string.c define endstring 0 int strlen ch...