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 典型的非法指標解...