在 Ubuntu 下用 gcc 编译多文件 C/C++ 程序,常见做法有几种,下面按从简单到规范的方式说明。
假设有:
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
✅ 修改某个文件时,只需重新编译该文件
如果是 .cpp 文件:
g++ main.cpp func.cpp -o app
或:
g++ -c main.cpp
g++ -c func.cpp
g++ main.o func.o -o app
如果头文件在 include/ 目录:
include/func.h
src/main.c
src/func.c
gcc -Iinclude src/main.c src/func.c -o app
或分步:
gcc -Iinclude -c src/main.c
gcc -Iinclude -c src/func.c
gcc main.o func.o -o app
示例 Makefile:
CC = gcc
CFLAGS = -Iinclude
app: main.o func.o
$(CC) main.o func.o -o app
main.o: main.c
$(CC) $(CFLAGS) -c main.c
func.o: func.c
$(CC) $(CFLAGS) -c func.c
clean:
rm -f *.o app
使用:
make
./app
make clean
一般是:
main.c,忘了 func.c加:
-I头文件目录
如果你愿意,可以把你的具体文件结构或报错信息发出来,我可以帮你写对应的编译命令或 Makefile。