GCC 参数记不住?这份语法速查 + 多参数组合示例,收藏就够

发布时间:2026/9/30 2:46:33

GCC 参数记不住?这份语法速查 + 多参数组合示例,收藏就够 代码写得没问题一编译却蹦出一堆undefined reference to xxx。改了半天最后发现是命令里库的顺序写反了。今天把 GCC 语法、核心参数、多参数组合以及最容易踩的链接顺序坑一篇讲清。一、gcc 基本语法一条 gcc 命令长这样$ gcc[options][source files][object files][-o output file]四部分选项options、源文件、目标文件、输出文件。不写-o时默认生成a.out。提醒GCC 是GNU Compiler Collection的缩写不止能编 CC / Fortran 等都行。我们常说的gcc默认走 C 编译。二、核心参数速查分类参数作用编译控制-c只编译不链接生成 .o 目标文件预处理-Dname[value]定义宏等价于源码#define-Uname取消宏定义路径-I dir头文件header搜索目录-L dir库文件library搜索目录链接-l lib链接指定库如-lm链 libm输出-o file指定输出文件名优化-O level优化代码O0/O1/O2/O3/Os调试-g level生成 GDB 调试信息g1/g/g3共享库-fPIC生成位置无关代码Position Independent Code-shared生成共享库 .so警告-w关闭所有警告-Wall开启全部常用警告-Wextra在 -Wall 基础上再加额外警告分级速记优化-O-O0不优化默认-O2常用-O3激进-Os省体积调试-g-g1最少-g常规-g3最全含宏警告-w压制→ 默认 →-Wall→-Wextra三、多参数命令多数参数与顺序无关空格分隔即可# 优化 全警告 自定义名gcc-O2-Wall-oapp main.c utils.c# 可调试 暴露隐患开发期标配gcc-g-Wall-oapp main.c# 做共享库位置无关 共享固定搭配gcc-fPIC-shared-olibfoo.so foo.c# 引入第三方库头文件目录 库目录 链接库gcc-O2-Wall-I/opt/include -L/opt/lib-lmylib-oapp main.c# 定义宏 优化gcc-DDEBUG-O2-oapp main.c实战组合开发期用-g -Wall发布期用-O2 -Wall做 SDK / 插件用-fPIC -shared。四、注意-l 链接顺序很多人栽在这。-l链接库有依赖顺序被依赖的库写在后面。链接器linker从左到右只扫一遍静态库.a只在「能补上当前未定义符号」时才被拉入不会回头补救左侧的依赖。由此两条铁律目标文件.o写在库之前gcc app.o -lfoo别写gcc -lfoo app.o若 A 依赖 BA 调用 B写-lA -lB——等 A 暴露出对 B 的需求时B 还在右侧可被拉入依赖链app → foo → barapp 调 foofoo 调 bar命令结果原因gcc app.o -lfoo -lbar成功app 暴露 foo 需求→拉 foo→foo 暴露 bar 需求→右侧 bar 补上gcc -lfoo -lbar app.o失败处理库时 app 还没出现两库被整体跳过报undefined referencegcc app.o -lbar -lfoo失败foo 排在 bar 之后需要的 bar 已错过报undefined reference to bar进阶循环依赖A↔B单遍无解用分组循环扫描-Wl,--start-group -lA -lB -Wl,--end-group共享库.so符号在运行时由动态链接器解析顺序相对宽松但发行版默认--as-needed链接期顺序仍影响DT_NEEDED记录好习惯照旧踩坑细节-l和库名之间不能有空格写-lm不写-l m。五、参数别乱加-O3不一定更快激进内联会撑大代码、拖慢指令缓存命中嵌入式 / 实时场景慎用-O2更稳。-static静态链接可执行文件体积暴涨、无法享受系统库更新除非要的是可移植单文件。-w关警告等于蒙眼开车开发期别用至少上-Wall。-g进发布版带调试信息体积大且暴露源码结构发布时去掉或单独分离。结尾GCC 高频参数就这些记住「分类 组合 链接顺序」三件事编译报错能少一大半。参考资料https://www.rapidtables.com/code/linux/gcc.html
延伸阅读

更多相关文章

2026/9/30 2:41:33

Java中toString()方法的正确使用技巧

咱们来详细说说在Java这玩意儿里面括号括起来的那个方法到底是怎么回事儿, 还有为啥这么重要的道理。在 Java 开发中,() 是我们最常用的方法之一。无论是调试程序、输出日志,还是快速查看对象内容,() 方法都起到了至关重要的作用。本篇博客将…

2026/9/30 2:41:33

一键将图片转为炫酷字符画

在这篇文章里头, 我们会去用到下面这些个知识点的哦。完整的一个程序, 那个用来把图片转换成字符画的py脚本。请先在命令行工具中找到存放图片文件的那个目录位置, 接着把当前路径切换到那个地方去执行操作, 然后启动名为图片转字符画.py的这个程序脚本并在其后面跟上参数.png这…

2026/9/30 2:41:33

cocos2d-x双人坦克大战demo:输入分发与碰撞判定实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 3:51:37

Model-Optimizer:大模型推理全链路分层优化实践指南

1. 项目概述:Model-Optimizer不是工具名,而是一类工程实践的统称 “Model-Optimizer”这个词在当前技术社区里常被误认为是一个具体软件或开源项目——比如有人搜“Model-Optimizer下载”“Model-Optimizer GitHub”,结果却找不到官方仓库。…

2026/9/30 3:51:37

SFINAE 机制全解析:从 enable_if 到 void_t 的模板实战

有些话说在前头:模板编程里最让人上头的部分,多半不是怎么把类型算出来,而是怎么让编译器“在你不想要的时候别报错,在你想选的时候刚好选对”。SFINAE 就是这一整套把戏的核心发动机。如果你玩 C 模板玩到一定阶段,一…

2026/9/30 3:51:37

大模型推理加速工程实践:TensorRT与vLLM协同部署指南

1. 项目概述:Model-Optimizer不是工具名,而是工程范式的代号“Model-Optimizer”这个标题乍看像某个开源库或GUI软件的名称,但结合NVIDIA、TensorRT-LLM、vLLM、PT文件转换、Docker镜像部署等高频热词,它实际指向的是一整套面向生…

2026/9/30 3:51:37

TensorFlow 2024实战:安装避坑、Keras 3与模型部署全流程

2024年聊起TensorFlow,注定不是一句"PyTorch已经赢了"能概括的。过去一年我在好几个生产项目里来回切换框架,发现一个特别有意思的错位:社交媒体上讨论最多的永远是PyTorch生态、LoRA微调、扩散模型,可当我拉开服务器上…

2026/9/30 3:51:37

自动化脚本实战指南:从Shell到UI、接口与CI部署

这些搜索词扔给我的一瞬间,我基本就明白了——问“自动化与脚本”的人,十个里有八个不是想听理论,而是正被某个具体的活儿追着跑:要么是测试任务重复到吐,要么是部署流程卡得人想骂人,再要么就是成天在不同…

2026/9/30 3:46:37

模型优化实战:从ONNX到TensorRT的量化、剪枝与部署加速指南

算力需求暴涨、落地 deadline 卡得死死的——“模型是训出来了,但根本跑不动”这种话我这两年听了太多。模型结构和训练效果只是第一步,真正考验工程能力的,是把一个训练好的模型安全、高效、低损耗地塞进生产环境。就在这个环节,…

2026/9/29 11:07:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/29 21:48:03

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 0:01:22

MATLAB+Yalmip+CPLEX实战:综合能源系统优化调度全流程解析

做综合能源系统优化调度这活儿,最痛苦的不是建模本身,而是模型写完之后不知道该怎么求解。看论文里轻飘飘一句“采用Yalmip调用CPLEX求解”,自己上手时却往往卡在环境配置、变量声明、约束写法和求解状态判读上,一耗就是两三天。这…

2026/9/30 0:01:22

I3C比I2C快10倍?RK3576实战:速率、DTS配置与混合总线避坑指南

I3C 比 I2C 快 10 倍?这句话在嵌入式群里传了很久,每次都能吵出一堆截图。前段时间我正好在 RK3576 上调板级 I3C 接口,从控制器寄存器一路摸到 Linux DTS 配置,踩了不少坑,也把这笔速度账彻底算明白了。本文就用 RK35…

2026/9/30 0:01:22

字符串转对象:JSON.parse、new Function与URLSearchParams

“字符串转对象”这几个字,我在技术群里见过的问法至少有十几种:有人拿着一串{a:1,b:2}说 JSON.parse 直接报错,有人要从 URL 里抠出参数,还有人只是想把abc变成能挂属性的东西。js 这门语言里,字符串和对象之间的转换…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/29 9:46:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/29 6:36:14

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑