以最簡(jiǎn)單的c語言代碼為例,hello.c代碼如下:
#include
int main()
{
printf("hello world!\\n");
return 0;
}
1、預(yù)編譯
將.c中的頭文件展開、宏展開,生成的文件是.i文件。例如hello.c文件,生成過程是:
gcc -E hello.c -o hello.i
預(yù)處理的過程是將頭文件展開、替換,如果有宏,也會(huì)進(jìn)行替換。這一步不進(jìn)行語法檢查。
2、編譯
將預(yù)處理的.i文件生成.s的匯編文件。會(huì)進(jìn)行語法檢查。
gcc -S hello.i -o hello.s
3、匯編
將.s匯編文件生成.o的目標(biāo)文件。
gcc -c hello.s -o hello.o
4、鏈接
將.o文件鏈接成目標(biāo)文件,也就是可執(zhí)行程序
gcc hello.o -o hello
這一步中如果不加-o默認(rèn)輸出的可執(zhí)行程序時(shí)a.out。這四步是將整個(gè)編譯過程展開來看的,通??梢灾苯邮褂胓cc hello.c,直接生成結(jié)果a.out。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
相關(guān)推薦
C語言的編譯鏈接過程要把我們編寫的一個(gè)C程序源代碼,轉(zhuǎn)換成可以在硬件上運(yùn)行的程序(可執(zhí)行代碼),需要進(jìn)行
發(fā)表于 06-25 10:36
?375次閱讀
? C語言的編譯鏈接過程要把我們編寫的一個(gè)C程序源代碼轉(zhuǎn)換成可以在硬件上運(yùn)行的程序(可執(zhí)行代碼),需要進(jìn)行
發(fā)表于 08-21 10:06
?2437次閱讀
物聯(lián)網(wǎng)編譯
fly
發(fā)布于 :2022年08月27日 17:06:31
。 2)DSP的C語言的編譯過程為,C編譯為ASM,再由ASM
發(fā)表于 11-03 15:14
,如屏幕繪圖等。但在CCS中,為了方便調(diào)試,可以將數(shù)據(jù)通過printf命令虛擬輸出到主機(jī)的屏幕上。2)DSP的C語言的編譯過程為:C
發(fā)表于 10-15 15:37
C語言C語言編譯過程,各過程作用預(yù)處理階段將源碼文件
發(fā)表于 10-27 09:00
outputgcc -o 輸出的文件名 輸入文件名2.c語言的編譯過程預(yù)處理cpp -o a.i 001.c替換【gcc -E】
發(fā)表于 12-23 06:58
的擴(kuò)展部分,如屏幕繪圖等。但在 CCS 中,為了方便調(diào)試,可以將數(shù)據(jù)通過 prinf 命令虛擬輸出到主機(jī)的屏幕上。2)DSP 的 C 語言的編譯過程為,
發(fā)表于 07-06 17:22
編譯---->形成目標(biāo)代碼,目標(biāo)代碼是在目標(biāo)機(jī)器上運(yùn)行的代碼。
連接---->將目標(biāo)代碼與C函數(shù)庫(kù)相連接,并將源程序所用的庫(kù)代碼與目標(biāo)代碼合并,并形成最終可執(zhí)行的二進(jìn)制機(jī)器代碼(程序)。
執(zhí)行----->在特定的機(jī)器環(huán)境下運(yùn)行
發(fā)表于 02-08 17:02
?4976次閱讀
的屏幕上。2)DSP的C語言的編譯過程為,C編譯為ASM,再由ASM
發(fā)表于 01-09 08:00
?11次下載
到主機(jī)的屏幕上。 2)DSP的C語言的編譯過程為,C編譯為ASM,再由ASM
發(fā)表于 05-24 14:50
?6次下載
使用GCC將C語言源代碼文件生成可執(zhí)行文件的過程,需要經(jīng)歷四個(gè)的步驟:預(yù)處理(Preprocessing)編譯(Compilation)匯編(Assembly)鏈接(Linking)
發(fā)表于 02-18 11:47
?3968次閱讀
C語言的編譯鏈接過程要把我們編寫的一個(gè)C程序源代碼,轉(zhuǎn)換成可以在硬件上運(yùn)行的程序(可執(zhí)行代碼),需要進(jìn)行
發(fā)表于 06-27 10:21
?3091次閱讀
C語言C語言編譯過程,各過程作用預(yù)處理階段將源碼文件
發(fā)表于 10-20 17:36
?2次下載
為什么我們編寫的C語言要進(jìn)行編譯?什么是編譯?編譯時(shí)發(fā)生了什么? 機(jī)器無法理解我們編寫的C
發(fā)表于 11-24 15:47
?1155次閱讀
評(píng)論