news 2026/6/10 15:07:35

【建议收藏】GCC 编译器常用选项速查表(附助记词)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【建议收藏】GCC 编译器常用选项速查表(附助记词)

作者:嵌入式兔哥

简介:在嵌入式开发中,GCC 是我们最忠实的伙伴。很多兄弟可能只习惯用 IDE 的一键编译,但一旦转战 Linux 环境或编写 Makefile,理解 GCC 的这些参数就成了基本功。今天兔哥帮大家整理了一份“不求人”的 GCC 常用选项速查表,配合助记词,助你过目不忘!

类别选项助记(全称)作用示例及解释
库与头文件用法-IInclude指定头文件的搜索路径。



告诉编译器去哪里找.h文件。
gcc main.c -I ./inc



(解释:编译时额外在./inc目录寻找头文件)
-llibrary指定要链接的库名



库名需去掉前缀lib和后缀.so
gcc main.c -lpthread



(解释:链接libpthread.so线程库)
-LLib path指定库文件的搜索路径。



告诉编译器去哪里找.so.a文件。
gcc main.c -L ./lib



(解释:链接时额外在./lib目录寻找库文件)
编译流程-EPrE-process只进行预处理,既不编译,也不汇编



主要处理#include#define等。
gcc -E main.c -o main.i



(解释:生成.i预处理文件,用于检查宏展开)
-SASsembly只编译,不汇编



将 C 代码转换为汇编代码。
gcc -S main.c -o main.s



(解释:生成.s汇编文件,用于查看底层指令)
-ccompile编译并汇编,但不进行链接



将汇编代码转换为机器码。
gcc -c main.c -o main.o



(解释:生成.o目标文件,用于多文件编译)
-ooutput小写字母“o”,指定生成的可执行文件的名字



不指定的话生成的可执行文件名为a.out
gcc main.c -o app



(解释:生成名为app的可执行文件)
调试与优化-gDebug生成调试信息



方便 GDB 或 VSCode 进行断点调试。
gcc -g main.c -o app



(解释:生成包含调试符号的程序,体积稍大)
-O0~-O3Optimize指定优化等级



-O0不优化(调试用);-O2标准优化(发布用)。
gcc -O2 main.c -o app



(解释:使用 Level 2 级别优化代码性能)
-WallWarningAll开启所有警告



强烈建议使用,能发现潜在 Bug。
gcc -Wall main.c -o app



(解释:打印出所有可能的代码警告信息)
嵌入式软件常用-DDefine定义宏



等同于在代码里写#define,常用于条件编译。
gcc main.c -DDEBUG



(解释:在命令行定义 DEBUG 宏,激活调试代码)
-staticstatic静态链接



把所有依赖库打入可执行文件,体积大但移植性好。
gcc main.c -static -o app



(解释:生成不依赖系统动态库的独立程序)
-nostdlibno std lib不连接标准库



不使用 glibc,用于编写 Bootloader 或裸机程序。
gcc -nostdlib start.o ...



(解释:仅链接指定文件,不引入标准 C 库)

🐰 兔哥划重点

1.-I,-L,-l傻傻分不清楚?

这是新手最容易报错的地方。记住这个口诀:

  • 头文件 (Include)找不到? 用-I(大写 i) 指路。

  • 库文件 (Lib)在哪? 用-L(大写 L) 指路。

  • 叫什么 (library)名字? 用-l(小写 L) 点名。

注意-l后面跟的是库的缩写

  • 文件名:libmath.so-> 选项:-lmath

  • 文件名:libjpeg.a-> 选项:-ljpeg

2.-c-o的黄金搭档

在编写Makefile时,我们通常不会直接gcc main.c -o app一步到位,而是分两步走,这样修改一个文件时,只需要重新编译那个文件即可,速度更快:

# 1. 先生成 .o (使用 -c) gcc -c main.c -o main.o gcc -c func.c -o func.o # 2. 最后链接 (不加 -c) gcc main.o func.o -o app

3.-g-O2能共存吗?

可以!-g主要是添加符号表,-O2是改变代码结构以优化性能。虽然可以共存,但在-O2优化后,GDB 调试时可能会发现代码跳跃执行(因为指令被重排了),建议开发阶段用-O0 -g,发布阶段用-O2

如果觉得这篇速查表对你有帮助,欢迎点赞收藏,我是嵌入式兔哥,我们下期见!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:35:01

互联网大厂求职面试:Java小白的成长之路

文章标题: 互联网大厂求职面试:Java小白的成长之路 文章简述: 本文讲述了一位名叫“超好吃”的Java小白在互联网大厂求职面试中的故事。通过三轮提问,面试官涵盖了Java核心技术栈、微服务、云原生等内容,帮助求职者在技…

作者头像 李华
网站建设 2026/6/10 12:27:21

AI虚拟恋人的伦理边界:情感依赖与主体性思考

虚拟恋人的情感依赖:从现象到成因虚拟恋人作为AI技术落地的典型场景,近年来伴随生成式AI的迭代实现了用户规模的快速增长。据某全球咨询机构2023年报告显示,AI伴侣类应用的月活用户较2022年增长47%,其中35%的用户日均互动时长超过…

作者头像 李华
网站建设 2026/6/10 12:33:38

Paperxie:当课程论文不再是 “每周深夜的突击”

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/aippt https://www.paperxie.cn/ai/coursePaperhttps://www.paperxie.cn/ai/coursePaper 周三晚上九点,我刚把选修课 “教育社会学” 的课件划到最后一页,手机日历的弹窗突然跳出来…

作者头像 李华
网站建设 2026/6/10 12:43:08

震惊!这家云服务器代理商性价比竟超厂家,背后真相曝光!

震惊!这家云服务器代理商性价比竟超厂家,背后真相曝光!在云计算服务市场竞争日趋白热化的今天,企业用户在选择云服务时,往往面临一个核心抉择:是直接向原厂采购,还是通过专业的代理商获取服务&a…

作者头像 李华
网站建设 2026/6/10 12:33:23

震惊!云服务器代理商选错,你的业务损失千万!

震惊!云服务器代理商选错,你的业务损失千万!在数字化转型的浪潮中,云服务器已成为企业运营的“数字心脏”。然而,许多企业在选择云服务时,往往将目光聚焦于头部云厂商的品牌光环,却忽略了连接企…

作者头像 李华
网站建设 2026/6/10 14:00:51

IO重定向

第一部分:重定向的本质 1. 核心规则:最小分配原则Linux 在 open 一个文件时,有一个铁律:给新文件分配的 fd,永远是当前 files_struct 数组中 最小的、未被占用的 下标。2. 手动实现重定向 ( The "Hack" Way …

作者头像 李华