Ⅰ C語言文件的編譯與執行的四個階段並分別描述
開發C程序有四個步驟:編輯、編譯、連接和運行。
任何一個體系結構處理器上都可以使用C語言程序,只要該體系結構處理器有相應的C語言編譯器和庫,那麼C源代碼就可以編譯並連接到目標二進制文件上運行。
1、預處理:導入源程序並保存(C文件)。
2、編譯:將源程序轉換為目標文件(Obj文件)。
3、鏈接:將目標文件生成為可執行文件(EXE文件)。
4、運行:執行,獲取運行結果的EXE文件。
(1)描述一下gcc的編譯過程擴展閱讀:
將C語言代碼分為程序的幾個階段:
1、首先,源代碼文件測試。以及相關的頭文件,比如stdio。H、由預處理器CPP預處理為.I文件。預編譯的。文件不包含任何宏定義,因為所有宏都已展開,並且包含的文件已插入。我歸檔。
2、編譯過程是對預處理文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程往往是整個程序的核心部分,也是最復雜的部分之一。
3、匯編程序不直接輸出可執行文件,而是輸出目標文件。匯編程序可以調用LD來生成可以運行的可執行程序。也就是說,您需要鏈接大量的文件才能獲得「a.out」,即最終的可執行文件。
4、在鏈接過程中,需要重新調整其他目標文件中定義的函數調用指令,而其他目標文件中定義的變數也存在同樣的問題。
Ⅱ 請問linux下,gcc編譯程序的過程(從讀取源文件到製作可執行程序中間所有過程,越詳細越好)
gcc -S *.c 預處理+反匯編
Ⅲ gcc編譯問題
-c和-o都是gcc編譯器的可選參數。-c表示只編譯(compile)源文件但不鏈接,會把.c或.cc的c源程序編譯成目標文件,一般是.o文件。-o用於指定輸出(out)文件名。不用-o的話,一般會在當前文件夾下生成默認的a.out文件作為可執行程序。
Ⅳ 關於C語言的編譯過程,GCC與windows下的c編譯器(如VS2010)的編譯過程是否存在區別
一般的編譯步驟是如此, 但也有一步到位的編譯器
Ⅳ gcc 編譯
int main()
{
int a;
int *p;
a=65;
p=&a;
printf("%d \n",*p);
printf("%d \n",a);
}
Ⅵ gcc編譯流程
gcc編譯分為四部;
第一步,預編譯,將程序中的宏定義等預編譯;
第二步,編譯,將*.h,*.c等文件編譯成為*.o文件;
第三步,匯編;
第四步,連接,將*.o文件連接庫,生成可執行文件!
Ⅶ 的程序在Gcc下怎麼編譯
關於 C 語言源程序,最簡單的使用方式就是:gcc my_program.c <cr>,如果沒有程序錯誤的話,gcc 編譯器會生成一個預設的可執行程序:a.out 。
常用的有:gcc -o my_runfile my_program.c <cr>
使用 my_runfile 運行文件名代替預設的可執行程序 a.out
gcc -c my_program.c <cr>
只編譯,不連接。生成一個 my_program.o 的文件。
如果還需要更多的選項,那就需要查看 gcc 的編譯選項了。當然了,如果程序的規模再要大的話,那就需要編寫 makefile 文件,以及 make 工具對 makefile 進行管理了。
Ⅷ 結合例子,簡述gcc編譯器的編譯流程
你的程序可能太短,看不出區別來,你比對一下她們生成的匯編碼就知道了,優化可能O1就優化完了,你用O0對比O1的匯編結果,肯定不同的,從中能看出它到底優化了哪個地方