linux下編譯 鏈結 裝載 動態庫和靜態庫的學習

2021-09-10 23:25:43 字數 374 閱讀 7802

linux下編譯、鏈結和裝載.

自己在linux上編譯、鏈結、動態庫和靜態庫的學習筆記

編譯生成可執行檔案

我們在單獨編譯的時候,只需要檢查標頭檔案,因為都放到了乙個目錄,所以單獨編譯的時候,不需要依賴其他檔案,就可以生成目標檔案(*.o),如下:

g++ -c showcoor.cpp

g++ -c showpoint.cpp

g++ -c main.cpp

鏈結生成的目標檔案

通過生成的目標檔案,最後進行鏈結,就可以生成最終的可執行檔案。

g++ -o main main.o showpoint.o showcoor.o

linux下 GCC編譯鏈結靜態庫 動態庫

目錄 回到頂部 有時候需要把一組 編譯成乙個庫,這個庫在很多專案中都要用到,例如libc就是這樣乙個庫,我們在不同的程式中都會用到libc中的庫函式 例如printf 也會用到libc中的變數 例如以後 要講到的environ變數 本文將介紹怎麼建立這樣乙個庫。這些檔案的目錄結構是 tree mai...

鏈結 裝載與庫 2 編譯和鏈結

1 預處理 主要的處理規則如下 gcc e hello.c o hello.i e表示只進行預編譯2 編譯 將預處理完的檔案進行一系列的詞法分析 語法分析 語義分析和 優化。gcc s hello.c o hello.s 3 彙編 將彙編 轉換成機器碼 gcc c hello.s o hello.o...

鏈結裝載庫

一般應用程式記憶體空間有如下區域 棧棧儲存了乙個函式呼叫所需要的維護資訊,常被稱為堆疊幀 stack frame 或活動記錄 activate record 一般包含以下幾方面 堆堆分配演算法 段錯誤 segment fault 或 非法操作,該記憶體位址不能 read write 典型的非法指標解...