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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言-用gcc指令体验C语言编译过程

發布時間:2025/6/17 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言-用gcc指令体验C语言编译过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 1 環境說明
  • 2 gcc編譯步驟
    • 2.1 編輯
    • 2.2 預處理
    • 2.3 編譯
    • 2.4 匯編處理
    • 2.5 鏈接
  • 3 一步到位的方法

1 環境說明

  • 系統:Windows
  • 編譯器:gcc
  • 命令行工具:cmder (用系統自帶的命令行工具也可以)

2 gcc編譯步驟

#步驟名生成文件功能
1編輯(Edit)test.c進行編碼工作
2預處理(Pre-processing)test.i將#include頭文件以及宏定義替換成其真正的內容
3編譯(Compiling)test.s將經過預處理之后的程序轉換成特定匯編代碼(assembly code)的過程
4匯編處理(Assembling)test.o將上一步的匯編代碼轉換成機器碼(machine code),生成目標文件
5鏈接(Linking)test.exe將多個目標文以及所需的庫文件鏈接成最終的可執行文件(executable file)

2.1 編輯

編寫以下代碼,命名文件名為test.c:

#include<stdio.h>int main() {printf("Hello World!");return 0; }

2.2 預處理

預處理gcc指令如下:

gcc -E test.c -o test.i
  • 參數-E - 執行編譯預處理
  • 參數-o - 指明輸出文件的文件名

執行過后控制臺沒有任何輸出,打開文件夾會發現生成了一個test.i文件

可以發現生成的test.i文件會比test.c文件大得多,因為進行了大量的替換,test.i文件可以通過記事本方式打開的,也可以輸入指令type test.i在控制臺查看,由于文件內容很多,下面僅展示最后部分,可以發現末尾部分還是我們編寫的源代碼,而頭文件#include<stdio.h>進行了全部替換

2.3 編譯

編譯gcc指令如下:

gcc -S test.i -o test.s
  • 參數-S - 編譯指令
  • 參數-o - 指明輸出文件的文件名

執行過后控制臺沒有任何輸出,打開文件夾會發現生成了一個test.s文件

我們這里用指令type test.s在控制臺查看文件內容,可以發現程序被轉換成了匯編代碼

.file "test.c".def __main; .scl 2; .type 32; .endef.section .rdata,"dr" .LC0:.ascii "Hello World!\0".text.globl main.def main; .scl 2; .type 32; .endef.seh_proc main main:pushq %rbp.seh_pushreg %rbpmovq %rsp, %rbp.seh_setframe %rbp, 0subq $32, %rsp.seh_stackalloc 32.seh_endprologuecall __mainleaq .LC0(%rip), %rcxcall printfmovl $0, %eaxaddq $32, %rsppopq %rbpret.seh_endproc.ident "GCC: (tdm64-1) 4.9.2".def printf; .scl 2; .type 32; .endef

2.4 匯編處理

匯編處理gcc指令如下:

gcc -c test.s -o test.o
  • 參數-c - 匯編轉機器碼
  • 參數-o - 指明輸出文件的文件名

執行過后控制臺沒有任何輸出,打開文件夾會發現生成了一個test.o文件

由于文件已經是機器碼了,打開文件的話顯然都是亂碼了,用指令type test.o在控制臺查看文件內容如下:

2.5 鏈接

鏈接處理gcc指令如下:

gcc test.o -o test
  • 參數-o - 指明輸出文件的文件名

執行過后控制臺沒有任何輸出,打開文件夾會發現生成了一個test.exe文件


既然已經轉換成了.exe可執行文件,在Windows操作系統下可以直接執行,直接在控制臺輸入test,執行結果如下:

可以發現最后輸出了Hello World!那么整個過程就結束了

3 一步到位的方法

直接可以從.c文件到.exe可執行文件,這里就不演示了

gcc test.c -o test

總結

以上是生活随笔為你收集整理的C语言-用gcc指令体验C语言编译过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。