在 Ubuntu 下使用 gcc 进行多文件编译,常见做法有以下几种。
假设有以下文件:
main.c
func.c
func.h
编译命令:
gcc main.c func.c -o app
运行:
./app
✅ 适合文件少、结构简单的项目
gcc -c main.c
gcc -c func.c
生成:
main.o
func.o
gcc main.o func.o -o app
gcc -c func.c
gcc main.o func.o -o app
✅ 适合中大型项目,编译更快
CC = gcc
CFLAGS = -Wall
app: main.o func.o
$(CC) main.o func.o -o app
main.o: main.c func.h
$(CC) $(CFLAGS) -c main.c
func.o: func.c func.h
$(CC) $(CFLAGS) -c func.c
clean:
rm -f *.o app
make # 编译
make clean # 清理
✅ 工程化必备
project/
├── main.c
├── src/
│ └── func.c
├── include/
│ └── func.h
编译:
gcc main.c src/func.c -Iinclude -o app
-Iinclude:指定头文件路径❌ 未包含头文件
✅ 在 .c 中 #include "func.h"
❌ 函数未定义
✅ 确认所有 .c 文件都参与了编译/链接
| 方式 | 适用场景 |
|---|---|
| gcc 直接编译 | 小练习 |
| 目标文件编译 | 多文件项目 |
| Makefile | 正式开发 |
如果你有 具体项目结构,我可以帮你写 完整编译命令或 Makefile。