GCC編譯連線

2021-05-26 00:38:54 字數 830 閱讀 5871

引數-e 可以完成程式的預處理工作而不進行其他的編譯工作。gcc -e -o a.cxx a.c

輸入下面的命令,檢視經過預處理以後的a.cxx 檔案。

vim a.cxx

引數-s 可以控制gcc 在編譯c 程式時只生成相應的匯程式設計序檔案,而不繼續執行後面的

編譯。下面的命令,可以將本章中的c 程式編譯成乙個匯程式設計序。

gcc -s -o a.s a.c

引數-c 可以使得gcc 在編譯程式時只生成目錄**而不生成可執行程式。輸入下面的命

令,將本章中的程式編譯成目錄**。

gcc -c -o a.o a.c

輸入下面的命令,檢視這個目錄**的資訊。

file a.o

顯示檔案a.o 的結果如下所示,顯示檔案a.o 是乙個可重定位的目標**檔案。

a.o: elf 32-bit lsb relocatable, intel 80386, version 1 (sysv), not stripped

gcc 可以把上一步驟生成的目錄**檔案生成乙個可執行檔案。在終端中輸入下面的命令。

gcc a.o -o aa.out

這時生成乙個可執行檔案aa.out。輸入下面的命令檢視這個檔案的資訊。

file aa.out

顯示的結果如下所示,表明這個檔案是可在linux 系統下執行的程式檔案。

aa.out: elf 32-bit lsb executable, intel 80386, version 1 (sysv), dynamically

linked (uses shared libs), for gnu/linux 2.6.9, not stripped

gcc編譯,ld連線

編寫乙個hello world的簡單程式 hello.c 1 include2 3 intmain void 4 直接編譯很簡單 gcc o hello.o hello.c 但是如果使用gcc編譯,然後使用ld連線,就會出錯 gcc c o hello.o hello.c ld o hello he...

編譯 GCC 連線順序

當使用兩個靜態庫存在依賴的時候,連線的時候可能會遇 undefined reference to 問題。這裡我們使用a.c b.c main.c 來說明 acall.h ifndef acall h define acall h int acall int a,int b endif bcall.h...

gcc編譯過程

本文對gcc編譯器如何工作做乙個概要描述.更為詳細的資訊請參考編譯器手冊。當我們進行編譯的時候,要使用一系列的工具,我們稱之為工具鏈.其中包括 預處理器cpp,編譯器前端gcc g 彙編器as,聯結器ld.乙個編譯過程包括下面幾個階段 1 預處理。預處理器cpp將對原始檔中的巨集進行展開。2 編譯。...