gcc 源文件.c -o 输出文件
,常用参数包括 -Wall
(显示警告)、 -g
(生成调试信息)、 -c
(仅编译不链接),支持多文件编译及优化选项(如 -O2
)。
GNU Compiler Collection(GCC)是Linux系统中最常用的编译器,支持C、C++、Objective-C等语言,以下是GCC编译的完整流程和常用命令:
sudo apt update && sudo apt install build-essential
sudo yum groupinstall "Development Tools"
验证安装:
gcc --version
单文件编译(从源代码到可执行文件)
gcc hello.c -o hello
执行程序:
./hello
分步编译流程
gcc -E hello.c -o hello.i
gcc -S hello.i -o hello.s
gcc -c hello.s -o hello.o
gcc hello.o -o hello
直接编译多个源文件
gcc main.c utils.c -o program
分步编译(适用于大型项目)
gcc -c main.c # 生成 main.o gcc -c utils.c # 生成 utils.o gcc main.o utils.o -o program
添加调试符号(配合GDB使用):
gcc -g app.c -o app_debug
-O1
:基础优化 -O2
:推荐使用的优化(平衡性能与安全性) -O3
:激进优化(可能影响稳定性) gcc -O2 app.c -o app_optimized
创建静态库
gcc -c lib_func.c # 生成 lib_func.o ar rcs libfunc.a lib_func.o
使用静态库:
gcc main.c -L. -lfunc -o static_app
创建动态库
gcc -shared -fPIC lib_func.c -o libfunc.so
使用动态库:
gcc main.c -L. -lfunc -o dynamic_app
语法错误
错误示例:error: expected ‘;’ before ‘}’ token
解决方法:检查代码中缺失的分号或括号。
链接错误
错误示例:undefined reference to 'function_name'
解决方法:确认所有相关文件已编译并正确链接。
头文件缺失
错误示例:fatal error: stdio.h: No such file or directory
解决方法:安装开发包(如Debian系系统运行sudo apt install libc6-dev
)。
-std=c11
或-std=c++17
指定语言标准。 -Wall
,强制警告为错误-Werror
。 LD_LIBRARY_PATH
: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/library/path