GCC使用说明

输出文件相关选项

选项 说明 示例
-o <文件名> 指定输出文件的名称。如果不使用该选项,默认生成名为a.out的文件。 gcc main.c -o my_program
-c 仅编译源文件,生成目标文件(.o 文件),不进行链接。适用于分模块编译。 gcc -c main.c 生成 main.o
-S 将源代码编译为汇编代码文件(.s 文件),不进行目标文件生成或链接。 gcc -S main.c 生成 main.s
-E 仅运行预处理器,将预处理后的代码输出到标准输出(或指定文件)。 gcc -E main.c > preprocessed.c
-v 显示编译器的详细执行过程,包括调用的预处理器、编译器和链接器命令。 gcc -v main.c
--save-temps 保存编译过程中生成的中间文件(预处理文件.i、汇编文件.s等)。 gcc --save-temps main.c

优化相关选项

选项 说明 示例
-O0 不进行任何优化(默认),用于调试时保持源代码和二进制之间的对应关系。 gcc -O0 main.c
-O1 开启基础优化,适用于快速编译时的性能提升。 gcc -O1 main.c
-O2 开启更高等级的优化,启用大多数优化选项,不会显著增加代码大小或编译时间。 gcc -O2 main.c
-O3 开启最高等级的优化,包括耗时的循环优化和内联扩展,适合对性能要求较高的程序。 gcc -O3 main.c
-Os 优化代码大小,常用于嵌入式开发,优先减少可执行文件的体积而非性能。 gcc -Os main.c
-Ofast 开启激进优化,包括违反IEEE标准的浮点运算优化,可能改变程序行为。 gcc -Ofast main.c

调试相关选项

选项 说明 示例
-g 启用调试信息,支持调试器(如gdb),包括变量、函数和行号等信息。 gcc -g main.c -o debug_program
-ggdb 为GNU调试器生成更详细的调试信息,推荐调试时使用。 gcc -ggdb main.c -o debug_program
-fstack-protector 启用栈保护,检测栈溢出并终止程序,增强安全性。 gcc -fstack-protector main.c
-fsanitize=address 启用地址消毒器(Address Sanitizer),检测内存错误(如缓冲区溢出)。 gcc -fsanitize=address main.c -o program
-fsanitize=undefined 启用未定义行为检测器,检测未定义行为(如整型溢出、非法移位)。 gcc -fsanitize=undefined main.c

警告和错误控制选项

选项 说明 示例
-Wall 启用大多数常见的警告信息,建议在开发中始终使用。 gcc -Wall main.c
-Wextra 启用额外的警告信息,包括可能存在问题的代码片段。 gcc -Wextra main.c
-Werror 将所有警告视为错误,编译过程中遇到警告即停止。 gcc -Werror main.c
-w 禁用所有警告信息,不建议使用。 gcc -w main.c
-pedantic 启用严格标准模式的警告,保证代码完全符合语言标准。 gcc -pedantic main.c

语言标准相关选项

选项 说明 示例
-std=c89 使用C89(ANSI C)标准编译。 gcc -std=c89 main.c
-std=c99 使用C99标准编译(支持//注释、可变长数组等)。 gcc -std=c99 main.c
-std=c11 使用C11标准编译(支持多线程、对齐支持等)。 gcc -std=c11 main.c
-std=gnu99 使用C99标准,并启用GNU扩展功能。 gcc -std=gnu99 main.c

多线程相关选项

选项 说明 示例
-pthread 启用POSIX线程支持,适用于多线程程序。 gcc -pthread main.c
-lpthread 显式链接pthread库,等效于-pthread gcc main.c -lpthread

链接和库相关选项

选项 说明 示例
-L<路径> 指定额外的库文件路径。 gcc main.c -L/path/to/libs -lmylib
-l<库名> 链接指定的库文件,-lm表示链接数学库。 gcc main.c -lm
-static 生成完全静态链接的可执行文件。 gcc main.c -static -o static_program
-shared 生成动态链接库(.so文件)。 gcc -shared -o libmylib.so mylib.c

高级和特定平台选项

选项 说明 示例
-m32/-m64 指定生成32位或64位目标代码(需目标系统支持)。 gcc -m64 main.c
-fPIC 生成位置无关代码(通常用于动态库)。 gcc -fPIC -shared -o libmylib.so mylib.c
-march=native 针对当前CPU架构生成优化代码。 gcc -march=native main.c
相关推荐
Dovis(誓平步青云)41 分钟前
探索C++标准模板库(STL):String接口的底层实现(下篇)
开发语言·c++·stl·string
waving-black1 小时前
利用frp和腾讯云服务器将内网暴露至外网(内网穿透)
linux·服务器·腾讯云·frp·内网穿透
stormsha1 小时前
Linux中su与sudo命令的区别:权限管理的关键差异解析
linux·运维·服务器·鸿蒙系统·ux·batch命令
草莓熊Lotso1 小时前
【数据结构初阶】--算法复杂度的深度解析
c语言·开发语言·数据结构·经验分享·笔记·其他·算法
KyollBM1 小时前
【CF】Day75——CF (Div. 2) B (数学 + 贪心) + CF 882 (Div. 2) C (01Trie | 区间最大异或和)
c语言·c++·算法
feiyangqingyun2 小时前
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
c++·qt·udp·gb28181
CV点灯大师2 小时前
C++算法训练营 Day10 栈与队列(1)
c++·redis·算法
筏.k2 小时前
grep、wc 与管道符快速上手指南
linux
Johny_Zhao2 小时前
华为MAAS、阿里云PAI、亚马逊AWS SageMaker、微软Azure ML各大模型深度分析对比
linux·人工智能·ai·信息安全·云计算·系统运维
CodeOfCC2 小时前
c语言 封装跨平台线程头文件
linux·c语言·windows