日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

gcc 编译过程

發(fā)布時(shí)間:2025/4/5 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gcc 编译过程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

gcc編譯

分步處理

  • 一、預(yù)處理
  • 二、編譯
  • 三、匯編
  • 四、鏈接
  • 一步到位
  • 多模塊編譯
  • 一次性編譯:
  • 獨(dú)立編譯:
  • C源文件到可執(zhí)行文件共經(jīng)歷了4個(gè)過(guò)程。在使用GCC編譯程序時(shí),編譯過(guò)程可以被細(xì)分為四個(gè)階段,包括預(yù)處理、編譯、匯編、鏈接。

    分步處理
    一、預(yù)處理
    在預(yù)處理階段,編譯器主要作加載頭文件、宏替換、條件編譯的作用。一般處理帶“#”的語(yǔ)句。

    我們可以通過(guò)gcc -E 選項(xiàng)進(jìn)行查看,如下所示:

    gcc -E main.c > main.i

    編譯器將main.c預(yù)處理結(jié)果輸出 main.i 文件。

    二、編譯
    在編譯過(guò)程中,編譯器主要作語(yǔ)法檢查和詞法分析。在確認(rèn)所有指令都符合語(yǔ)法規(guī)則之后,將其翻譯成等價(jià)的中間代碼或者是匯編代碼。

    gcc -S main.i -o main.s

    編譯器將預(yù)處理結(jié)果文件main.i翻譯成匯編代碼main.s

    三、匯編
    匯編階段是把編譯階段生成的”.s”文件轉(zhuǎn)成二進(jìn)制目標(biāo)代碼。

    gcc -c main.s -o main.o

    編譯器將main.s文件轉(zhuǎn)化為main.o 文件。

    四、鏈接
    在成功編譯之后,就進(jìn)入了鏈接階段。鏈接就是將目標(biāo)文件、啟動(dòng)代碼、庫(kù)文件鏈接成可執(zhí)行文件的過(guò)程,這個(gè)文件可被加載或拷貝到存儲(chǔ)器執(zhí)行。

    gcc main.o -o main

    編譯器將main.o鏈接成最終可執(zhí)行文件main.exe

    一步到位
    執(zhí)行以下代碼:

    gcc main.c -o main

    多模塊編譯
    一次性編譯:

    gcc -Wall main.c main_fun.c –o main

    獨(dú)立編譯:

    gcc –Wall –c main_fun.c –o main_fun.o gcc –Wall –c –o main.o main.c gcc –Wall main_fun.o fun.o –o main

    多模塊編譯中如果某一個(gè)模塊發(fā)生了變化,只需要編譯更改的模塊即可

    原文鏈接

    總結(jié)

    以上是生活随笔為你收集整理的gcc 编译过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。