当前位置: 首页 > news >正文

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库,等效于-pthreadgcc 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

http://www.mrgr.cn/news/82945.html

相关文章:

  • NVIDIA在CES 2025上的三大亮点:AI芯片、机器人与自动驾驶、全新游戏显卡
  • FinDKG: 用于检测金融市场全球趋势的动态知识图谱与大型语言模型
  • [创业之路-241]:《从偶然到必然-华为研发投资与管理实践》-2- IPD流程中的业务线、技术线、职能支撑线
  • 什么是 ERP?
  • 毕业项目推荐:基于yolov8/yolov5/yolo11的动物检测识别系统(python+卷积神经网络)
  • Golang学习笔记_20——error
  • .NET体系架构
  • 编排式 Saga 模式
  • 通过gradle发布aar或jar携带sources-jar到maven nexus
  • 【简博士统计学习方法】第1章:7. 生成模型与判别模型
  • HarmonyOS开发:粒子动画应用实战
  • TCP 套接字 方法
  • 我在广州学 Mysql 系列——与索引相关的练习题
  • 前端 动图方案
  • C#—Task异步的常用方法及TaskFactory工厂类详解
  • ELK实战(最详细)
  • cuda实现flash_attn_mma_share_kv源码分析
  • 用VS C#构建Windows服务【纯操作版,附带项目地址】
  • [开源]自动化定位建图系统
  • A/B实验之置信检验(一):如何避免误判 (I类) 和漏报 (II类)
  • 137. 只出现一次的数字 II
  • 【Rust自学】10.8. 生命周期 Pt.4:方法定义中的生命周期标注与静态生命周期
  • 9. C 语言 循环控制结构详解
  • 数据传送类指令
  • 【Linux】上传、下载、压缩、解压
  • Python 模拟登录网页,或者编写爬虫时模拟登录的详细总结