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

Linux 環境下 C 程式編譯執行入門指南

     編輯:關於C語言

Linux 環境下 C 程式編譯執行入門指南

Linux 是 C 語言的原生開發環境。本文引導初學者完成從撰寫原始碼、編譯連結到執行的完整流程,並解析 GCC 編譯器的關鍵參數與常見問題。

完整操作流程

1. 撰寫原始碼

$ vi hello.c

輸入以下內容(按 i 進入插入模式,Esc 退出,:wq 存檔離開):

#include <stdio.h>

int main(void) {
    printf("Hello Linux!\n");
    return 0;
}

2. 編譯連結

$ gcc hello.c -o hello
  • gcc:GNU Compiler Collection
  • hello.c:原始檔
  • -o hello:指定輸出執行檔名稱(預設 a.out)

3. 執行程式

$ ./hello
Hello Linux!

注意:必須加 ./ 指定當前目錄,因為 Linux 預設不搜尋當前目錄(安全機制)。

GCC 編譯四階段解析

階段指令輸出說明
前處理gcc -E hello.c -o hello.i.i展開 #include、#define、條件編譯
編譯gcc -S hello.i -o hello.s.s產生組合語言
組譯gcc -c hello.s -o hello.o.o產生目標檔(機器碼,未連結)
連結gcc hello.o -o hello執行檔解析符號、連結庫、產生最終二進位

單指令 gcc hello.c -o hello 會自動執行上述四階段並清除中間檔。

關鍵編譯參數

參數用途範例
-Wall開啟所有常見警告gcc -Wall hello.c
-Wextra額外警告gcc -Wall -Wextra hello.c
-g產生除錯資訊gcc -g hello.c -o hello
-O2優化等級 2(發布建議)gcc -O2 hello.c -o hello
-std=c11指定 C 標準gcc -std=c11 hello.c
-I/path加入標頭檔搜尋路徑gcc -I../include hello.c
-L/path -llib加入庫搜尋路徑與連結gcc -L../lib -lmylib hello.c

多檔案專案編譯

# main.c
#include "math.h"
int main() { printf("%d\n", add(1,2)); }

// math.h
int add(int a, int b);

// math.c
#include "math.h"
int add(int a, int b) { return a + b; }

編譯方式一(單步):

$ gcc main.c math.c -o app

編譯方式二(分步,適合 Makefile):

$ gcc -c main.c -o main.o
$ gcc -c math.c -o math.o
$ gcc main.o math.o -o app

常見問題與解決

問題原因解決
command not found: gcc未安裝編譯器sudo apt install build-essential (Ubuntu/Debian)
Permission denied執行檔無執行權限chmod +x hello 或重新編譯
undefined reference to缺少庫連結加上 -l庫名 (如 -lm 連結數學庫)
中文亂碼終端機編碼不匹配確保原始碼 UTF-8,終端機設定 UTF-8

進階:使用 Makefile 自動化建構

# Makefile
CC = gcc
CFLAGS = -Wall -Wextra -g -O2
TARGET = hello
SRCS = hello.c
OBJS = $(SRCS:.c=.o)

all: $(TARGET)

$(TARGET): $(OBJS)
	$(CC) $(CFLAGS) -o $@ $^

%.o: %.c
	$(CC) $(CFLAGS) -c -o $@ $<

clean:
	rm -f $(OBJS) $(TARGET)

.PHONY: all clean

使用:make 建構,make clean 清理。

總結

Linux 下 C 程式開發核心流程:vi → gcc → ./執行檔。掌握 GCC 四階段編譯模型、關鍵參數(-Wall -g -O2)、多檔案編譯與 Makefile 自動化,是 Linux 系統程式設計的必備基本功。建議搭配 GDB 除錯器(gcc -g + gdb ./hello)進一步提升開發效率。

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