首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Linux 下 GCC 編譯與 GDB 反彙編實戰指南:從 Hello World 到環境搭建

     編輯:關於C語言

Linux 下 GCC 編譯與 GDB 反彙編實戰指南:從 Hello World 到環境搭建

在 Linux 終端用 GCC 編譯、GDB 調試、反彙編查看底層指令,是 C/C++ 程序員必備基本功。本文以 Ubuntu 14.04 為例,手把手演示全流程,並附常見問題答疑。

實驗環境

  • VMware Workstation 10
  • Ubuntu 14.04 LTS Server amd64

第一步:最簡 Hello World

編寫 helloworld.c

#include 
int main() {
    printf("Hello World\n");
    return 0;
}

編譯與執行

gcc -o helloworld helloworld.c  # -o 指定輸出文件名
./helloworld                    # ./ 表示當前目錄下執行
# 輸出: Hello World!

第二步:GDB 反彙編

gdb ./helloworld
(gdb) disas main   # 反彙編 main 函數
# 輸出 x86_64 指令碼,如 push %rbp, mov %rsp,%rbp, call printf 等

GDB反彙編截圖

第三步:稍複雜程序反彙編觀察

編寫帶循環、函數調用的程序,觀察 call、jmp、棧幀建立/銷毀指令。

複雜程序反彙編截圖

常見問題答疑(FAQ)

Q1: Linux 下怎麼寫 C 代碼?保存成什麼格式?

vi a.c          # 用 vi 編輯器創建 .c 文件
# 輸入代碼,按 Esc,輸入 :wq 保存退出
gcc a.c         # 編譯生成 a.out
./a.out         # 執行

Q2: 如何構建 Vim + GCC + GDB 開發環境?

編輯器選擇: Vim 經典、Emacs 強大、Gedit 圖形友好,任選其一。
安裝命令(按發行版):

# RedHat/CentOS/Fedora/SUSE
yum install gcc gdb vim

# Debian/Ubuntu
sudo apt-get install gcc gdb vim

# 若有 rpm/deb 包
rpm -ivh pkg.rpm
dpkg -i pkg.deb

調試技巧: 編譯加 -g 保留符號表:gcc -g a.c -o a,GDB 才能顯示變量名、行號。

Q3: GCC 常用參數速查

參數作用
-o file指定輸出文件名
-g生成調試信息(GDB 必需)
-Wall開啟所有常見警告
-O2優化等級 2(發布版推薦)
-std=c11指定 C 標準版本
-c只編譯不鏈接,生成 .o

進階:GDB 常用命令

break main      # 在 main 斷點
run             # 運行程序
next / step     # 單步跳過/進入
print var       # 打印變量值
info registers  # 查看寄存器
bt              # 回溯棧幀
quit            # 退出 GDB

熟練掌握「編寫 → 編譯 → 調試 → 反彙編」閉環,是從寫代碼走向理解計算機系統運行本質的關鍵一步。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved