Linux 是 C/C++ 開發的原生平台。本文以 Deepin (基於 Debian/Ubuntu) 為例,手把手教學:安裝 Gedit 編輯器、編寫首個 Hello, Linux 程序、使用 GCC 單步/一鍵編譯鏈接、多源文件項目構建、常用警告選項與運行權限設置,助你快速上手 Linux 開發環境。
Gedit 圖形界面友好、支持語法高亮、輕量級,適合初學者。
# 添加倉庫並安裝 (Ubuntu/Deepin 等 Debian 系)
sudo apt-add-repository ppa:ubuntu-on-rails/ppa
sudo apt-get update
sudo apt-get install gedit-gmate
touch hello.c # 創建空文件
gedit hello.c # 打開編輯
輸入代碼(注意 Gedit 右下角語言模式顯示 "C",否則手動選擇):
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("Hello, Linux.\n");
exit(0);
}
GCC (GNU Compiler Collection) 是 Linux 標準編譯工具鏈,預裝於絕大多數發行版。
gcc hello.c -o hello
-o hello 指定輸出文件名(默認 a.out)。hello **無後綴**,Linux 通過執行權限位識別可執行文件。| 階段 | 命令 | 產出 | 說明 |
|---|---|---|---|
| 預處理 | gcc -E hello.c -o hello.i | .i 展開頭文件、宏 | 處理 #include、#define 等 |
| 編譯 | gcc -S hello.i -o hello.s | .s 匯編代碼 | 生成 AT&T 語法匯編 |
| 匯編 | gcc -c hello.s -o hello.o | .o 目標文件 (機器碼) | 含符號表、重定位信息 |
| 鏈接 | gcc hello.o -o hello | 可執行文件 | 解析符號、合併庫代碼 |
# 分別編譯為目標文件
gcc -c main.c -o main.o
gcc -c utils.c -o utils.o
# 統一鏈接
gcc main.o utils.o -o myapp
優勢:修改單文件只需重編譯該文件,大項目顯著提速。
./hello # 當前目錄下運行 (需 ./ 前綴)
# 若提示 Permission denied:
chmod +x hello # 添加執行權限 (推薦)
# 或 sudo chmod 777 hello (不推薦,過度授權)
gcc -Wall -Wextra -pedantic -Werror hello.c -o hello
| 選項 | 作用 |
|---|---|
-Wall | 啟用常見警告 (未使用變量、格式串不匹配、隱式轉換等) |
-Wextra | 額外警告 (如空循環體、舊式函數聲明) |
-pedantic | 嚴格 ISO C 標準,警告 GNU 擴展用法 |
-Werror | **將所有警告視為錯誤**,強制修復 |
建議:開發階段**始終加上** -Wall -Wextra -Werror,養成零警告習慣。
手動敲命令不適用於多文件項目。編寫 Makefile,一鍵 make 自動增量構建:
CC = gcc
CFLAGS = -Wall -Wextra -Werror -std=c11
OBJS = main.o utils.o
myapp: $(OBJS)
$(CC) $(CFLAGS) -o $@ $^
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f *.o myapp
.i/.s/.o 中間產物。Makefile。-Werror),養成高質量代碼習慣。