0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語(yǔ)言編譯過(guò)程

zzw_111_bit ? 2023-02-04 11:58 ? 次閱讀

以最簡(jiǎn)單的c語(yǔ)言代碼為例,hello.c代碼如下:

#include
int main()
{
    printf("hello world!\\n");
    return 0;
}

1、預(yù)編譯

將.c中的頭文件展開、宏展開,生成的文件是.i文件。例如hello.c文件,生成過(guò)程是:

gcc -E hello.c -o hello.i

預(yù)處理的過(guò)程是將頭文件展開、替換,如果有宏,也會(huì)進(jìn)行替換。這一步不進(jìn)行語(yǔ)法檢查。

2、編譯

將預(yù)處理的.i文件生成.s的匯編文件。會(huì)進(jìn)行語(yǔ)法檢查。

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è)編譯過(guò)程展開來(lái)看的,通??梢灾苯邮褂胓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ī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7575

    瀏覽量

    134124
  • 匯編
    +關(guān)注

    關(guān)注

    2

    文章

    214

    瀏覽量

    25834
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2942

    瀏覽量

    66445
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    646

    瀏覽量

    32672
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語(yǔ)言編譯過(guò)程

    C語(yǔ)言編譯鏈接過(guò)程要把我們編寫的一個(gè)C程序源代碼,轉(zhuǎn)換成可以在硬件上運(yùn)行的程序(可執(zhí)行代碼),需要進(jìn)行
    發(fā)表于 06-25 10:36 ?352次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>的<b class='flag-5'>編譯</b><b class='flag-5'>過(guò)程</b>

    C語(yǔ)言編譯鏈接過(guò)程

    ? C語(yǔ)言編譯鏈接過(guò)程要把我們編寫的一個(gè)C程序源代碼轉(zhuǎn)換成可以在硬件上運(yùn)行的程序(可執(zhí)行代碼),需要進(jìn)行
    的頭像 發(fā)表于 08-21 10:06 ?2329次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>的<b class='flag-5'>編譯</b>鏈接<b class='flag-5'>過(guò)程</b>

    DSP C語(yǔ)言與主機(jī)C語(yǔ)言的主要區(qū)別

    。 2)DSP的C語(yǔ)言編譯過(guò)程為,C編譯為ASM,再由ASM
    發(fā)表于 11-03 15:14

    讓你快速學(xué)會(huì)DSP技術(shù)——DSP入門必備資料與常見問(wèn)題解決

    ,如屏幕繪圖等。但在CCS中,為了方便調(diào)試,可以將數(shù)據(jù)通過(guò)printf命令虛擬輸出到主機(jī)的屏幕上。2)DSP的C語(yǔ)言編譯過(guò)程為:C
    發(fā)表于 10-15 15:37

    C語(yǔ)言編譯過(guò)程是怎樣的

    C語(yǔ)言C語(yǔ)言編譯過(guò)程,各過(guò)程作用預(yù)處理階段將源碼文件
    發(fā)表于 10-27 09:00

    C語(yǔ)言基礎(chǔ)與數(shù)據(jù)類型概述

    outputgcc -o 輸出的文件名 輸入文件名2.c語(yǔ)言編譯過(guò)程預(yù)處理cpp -o a.i 001.c替換【gcc -E】
    發(fā)表于 12-23 06:58

    DSP學(xué)習(xí)資料

    的擴(kuò)展部分,如屏幕繪圖等。但在 CCS 中,為了方便調(diào)試,可以將數(shù)據(jù)通過(guò) prinf 命令虛擬輸出到主機(jī)的屏幕上。2)DSP 的 C 語(yǔ)言編譯過(guò)程為,
    發(fā)表于 07-06 17:22

    詳細(xì)剖析C語(yǔ)言編譯過(guò)程

    編譯---->形成目標(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 ?4935次閱讀
    詳細(xì)剖析<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b><b class='flag-5'>編譯</b><b class='flag-5'>過(guò)程</b>

    做DSP應(yīng)該了解那些知識(shí)做DSP最應(yīng)該懂得的57個(gè)問(wèn)題介紹

    的屏幕上。2)DSP的C語(yǔ)言編譯過(guò)程為,C編譯為ASM,再由ASM
    發(fā)表于 01-09 08:00 ?11次下載
    做DSP應(yīng)該了解那些知識(shí)做DSP最應(yīng)該懂得的57個(gè)問(wèn)題介紹

    做DSP最應(yīng)該懂得那些問(wèn)題十四個(gè)問(wèn)題的詳細(xì)資料說(shuō)明

    到主機(jī)的屏幕上。 2)DSP的C語(yǔ)言編譯過(guò)程為,C編譯為ASM,再由ASM
    發(fā)表于 05-24 14:50 ?6次下載
    做DSP最應(yīng)該懂得那些問(wèn)題十四個(gè)問(wèn)題的詳細(xì)資料說(shuō)明

    GCC編譯C語(yǔ)言程序的過(guò)程是怎么樣的

    使用GCC將C語(yǔ)言源代碼文件生成可執(zhí)行文件的過(guò)程,需要經(jīng)歷四個(gè)的步驟:預(yù)處理(Preprocessing)編譯(Compilation)匯編(Assembly)鏈接(Linking)
    的頭像 發(fā)表于 02-18 11:47 ?3886次閱讀

    解析C語(yǔ)言編譯過(guò)程中所做的工作

    C語(yǔ)言編譯鏈接過(guò)程要把我們編寫的一個(gè)C程序源代碼,轉(zhuǎn)換成可以在硬件上運(yùn)行的程序(可執(zhí)行代碼),需要進(jìn)行
    的頭像 發(fā)表于 06-27 10:21 ?3043次閱讀
    解析<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b><b class='flag-5'>編譯</b><b class='flag-5'>過(guò)程</b>中所做的工作

    嵌入式面試整理

    C語(yǔ)言C語(yǔ)言編譯過(guò)程,各過(guò)程作用預(yù)處理階段將源碼文件
    發(fā)表于 10-20 17:36 ?1次下載
    嵌入式面試整理

    為什么C語(yǔ)言要進(jìn)行編譯

    為什么我們編寫的C語(yǔ)言要進(jìn)行編譯?什么是編譯?編譯時(shí)發(fā)生了什么? 機(jī)器無(wú)法理解我們編寫的C
    的頭像 發(fā)表于 11-24 15:47 ?952次閱讀
    為什么<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>要進(jìn)行<b class='flag-5'>編譯</b>