很多人写 C/C++ 卡住的地方,不是语法,而是"代码写完,然后呢"。在 Linux 下敲下 gcc hello.c 之后屏幕安静地回到提示符,什么都没发生,也不知道是编译失败还是自己忘了运行;程序跑起来结果不对,只能靠加 printf 到处打印,改一轮、编一轮、猜一轮。这门课要补的就是这段缺口——把编译和调试这两件"必须会、但大多数人是靠试出来"的事讲成可复用的方法。
先确认你是不是缺这块
下面这些情况如果中了三条以上,这门课对你就是对症的:
- 分不清 gcc 和 g++ 的差别,写 C++ 时随手用 gcc,遇到链接错误只能靠搜索引擎碰运气。
- 编译报错看得懂单个词,但看不懂一串
undefined reference,不知道是缺头文件、缺库还是链接顺序问题。 - 知道要加
-g才能调试,但不知道为什么加、不加会怎样。 - 听说过断点、单步、调用栈,实际操作时只会
printf大法,程序一崩就重跑。 - 对段错误(Segmentation fault)只有恐惧,没有定位手段。
- 写过多文件项目,但每次都是把文件全列在命令行里,没碰过 Makefile。
如果这些你都熟练,那这门课偏基础,可以跳过。
编译这条线要理清什么
gcc 和 g++ 的名字容易让人以为是两个独立的编译器,实际上它们来自同一个套件,差别主要在默认行为和链接的库上。课程会把预处理、编译、汇编、链接这四个阶段拆开看,理解之后你就能明白:为什么头文件找不到是预处理阶段的问题,为什么符号未定义是链接阶段的问题,为什么加了 -c 就只生成目标文件。
围绕这一步,需要练的是几组常见编译选项的用法——指定头文件搜索路径、指定库路径、链接某个具体库,以及理解为什么库的书写顺序会影响链接结果。这些不是背下来就完事的,动手改一次错误顺序、看一次报错,比读十遍说明有用。
调试这条线要建立什么习惯
gdb 的门槛不在命令多,而在于要先有一份带调试信息的可执行文件。课程会从编译时加调试选项讲起,再进入实际的操作:怎么在某个函数或某一行停下,怎么看当前变量的值,怎么一层层往上翻调用栈找到是谁把参数传错的。
更值得练的是两个高频场景:一是程序崩溃后拿到核心转储,怎么还原出事现场;二是设条件断点,让程序只在特定输入下停下来,避免在循环里单步几百次。这两招学会之后,调试时间会明显下降。
同时也要知道 gdb 不是万能药。有些错误(比如内存越界、使用未初始化内存)光靠断点看不出来,需要配合其他手段,课程会说明边界在哪,避免你在错误方向上死磕。
看完应该能回答的问题
- gcc 和 g++ 编译同一个 .cpp 文件,结果有什么不同,为什么。
- 一个
undefined reference报错,你会按什么顺序排查。 - 把库文件写在命令行的位置调换一下,为什么有时能编过、有时编不过。
- 程序段错误了,从启动 gdb 到定位到出错行,中间要经过哪几步。
- 什么情况下条件断点比普通断点省事。
- 一个由多个源文件组成的项目,从手写编译命令过渡到 Makefile,解决的到底是什么重复劳动。
怎么用这门课
建议是边看边敲,不要只看不动手。每学一个编译选项,就故意写错一次,看报错长什么样;每学一条调试命令,就在一段自己写的、有 bug 的代码上试一遍。零基础不等于可以只看不练,编译和调试本身就是手熟的过程,看会了和用会了之间差着一整轮练习。
如果时间紧,可以按这个优先级:先解决"编译能过、程序能跑",再解决"跑错了能查",最后再看多文件组织和构建工具。这样每一步都有能立刻用上的产出,不至于学完还不知道明天该怎么写代码。
在Linux编程环境下, gcc 、g++和 gdb 是三个核心工具。GCC(GNU Compiler Collection)是一个编译器套件,包含C编译器(gcc)和C++编译器(g++)。g++专门用于编译C++代码,支持类、模板等面向对象特性。gdb是功能强大的调试工具,支持设置断点、单步执行、检查内存状态等操作。
课程推荐
《Linux编程之gcc g++ gdb 零基础入门 Linux C C++ 编译器 调试器》在Linux编程环境下, gcc 、g++和 gdb 是三个核心工具。GCC(GNU Compiler Collection)是一个编译器套件,包含C编译器(gcc)和C++编译器(g++)。g++专门用于编译C++代码,支持类、模板等面向对象特性。gdb是功能强大的调试工具,支持设置断点、单步执行、检查内存状态等操作。【技能收获】学完可掌握:C/C++ 网络编程、Linux 运维。课程以实战为导向,覆盖从基础概念到完整项目落地的关键步骤,配套章节笔记便于课后复盘与面试前快速回顾。【学习建议】建议按目录顺序学习,先打基础再进入综合实战章节;每完成 2~3 节可结合笔记整理一份学习小结,最终尝试独立复现一套完整 Demo 写入个人作品集。【就业发展】可面向岗位:Linux 运维工程师、SRE、云计算工程师、DevOps 工程师。云原生与自动化运维仍是企业 IT 刚需方向,认证 + 实战项目组合能显著提升面试通过率,适合向中高级运维或架构岗进阶。 若你已有一定编程或运维基础,本课程可帮助你在现有技能栈上快速叠加热门方向能力,提升求职时的项目说服力与薪资谈判空间。
视频目录(23 节)
Linux编程之gcc g++ gdb 零基础入门 Linux C C++ 编译器 调试器
* 1 GNU操作系统与自由软件简介.mp4
* 2 gcc编译器简介与安装.mp4
* 3 gcc编译第一个hello程序.mp4
* 4 gcc编译链接的流程.mp4
* 5 gcc预处理-D选项.mp4
* 6 gcc预处理-M -MD -MF选项.mp4
* 7 gcc编译警告-Wall选项.mp4
* 8 gcc诊断颜色-fdiagnostics-color选项.mp4
* 9 gcc搜索头文件目录-I选项.mp4
* 10 gcc生成动态库-fPIC -shared选项.mp4
* 11 gcc链接库-l与库搜索目录-L选项.mp4
* 12 gcc将选项传递给链接器-Wl_选项.mp4
* 13 gcc编译器指定C标准-std选项.mp4
* 14 gcc编译器优化级别-O选项.mp4
* 15 gcc编译器调试-g选项.mp4
* 16 g++编译器的相关选项.mp4
* 17 gdb调试器简介与安装.mp4
* 18 gdb调试器命令使用详解(一).mp4
* 19 gdb调试器命令使用详解(二).mp4
* 20 gdb调试多线程详解.mp4
* 21 gdb附加到进程进行调试.mp4
* 22 gdb使用gdbserver进行远程调试.mp4
* 23 gdb 调试core文件详解.mp4





