很多人写 C 或 C++ 的日常是这样的:代码在编辑器里敲完,点一下运行按钮,能跑就交差,跑不通就来回加打印语句。这套习惯放到 Linux 服务器上会立刻失效——没有 IDE 的按钮,编译报错是一屏陌生英文,程序崩溃只剩一句 Segmentation fault。这门课补的正是这一段:从源文件到可执行文件中间发生了什么,以及出问题时你手里有哪些工具。

先确认自己缺的是哪一块

如果你满足下面任意一条,这节课的内容对你就是刚需,而不是"顺便看看":

  • 知道 gcc 能把 .c 变成可执行文件,但说不清预处理、编译、汇编、链接四个阶段各做了什么,报错信息里出现 ld、collect2 就发懵。
  • 写过 Makefile,但只是照抄模板;遇到多文件、多目录、需要链接第三方库时不知道怎么下手。
  • 程序在本地跑得好,一上 Linux 就 core dump,只会重启,不会用调试器定位到具体哪一行。
  • 听说过条件编译、宏定义、头文件搜索路径,但没系统用过,改配置全靠猜。
  • 接手了别人的 C/C++ 项目,编译脚本和构建命令看不懂,不敢动。

反过来,如果你已经能熟练写 CMake、会用 GDB 调试多线程死锁,这节课对你的增量有限,可以直接跳过。

课程实际覆盖的三件事

一、编译链路:gcc 与 g++

课程从 GNU 工具链和自由软件的背景讲起,这部分不是凑时长,而是解释清楚为什么 Linux 下编译工具长这样。接着落到实际用法:gcc 与 g++ 的分工差别、常用编译选项、预处理阶段到底展开成什么、头文件与库文件的搜索路径规则、多文件编译与链接的顺序问题。这些内容的价值在于,你以后再看到一长串编译命令,能逐段读懂每一部分在干什么,而不是整段复制。

二、调试:gdb

调试部分是这个课程里最不容易自学的环节。断点、单步、查看变量、查看调用栈、attach 到正在运行的进程——这些操作在没有指导的情况下,光靠 man 手册很难建立手感。课程按操作场景组织,不是把命令罗列一遍。学完之后你应该能对着一个崩溃的程序,说出它是怎么走到崩溃那一行的。

三、把工具用进真实工作流

单独的编译命令和调试点会了,还需要串成流程:改代码、编译、跑、发现问题、调试、再编译。课程中的示例围绕这个循环展开,配套练习也是按"先复现问题,再定位,再修复"的顺序设计,而不是给你一段正确代码让你照着敲。

建议的练习方式

  • 不要只看视频。每学一个编译选项,自己写一个最小的 .c 文件验证它的效果,尤其是 -D、-I、-L、-l 这几个容易混的。
  • 故意写错代码。把函数声明和定义写得不一致、故意漏掉头文件、故意让指针越界,然后观察编译器和调试器给出的信息。认识错误信息比认识正确写法更有用。
  • 用调试器而不是打印语句去查一次真实问题。哪怕只是数组越界这种小 bug,也强迫自己走一遍 gdb 的流程,把"加 printf"的惯性改掉。
  • 找一个开源的小型 C 项目,尝试不看它的构建脚本,自己写出编译命令跑起来。

看完应该能回答的问题

用这几个问题自查,能答上来就说明这一遍没白学:

  • 从 .c 到可执行文件,中间经过哪几步,每一步的输入输出分别是什么?
  • 链接时报 undefined reference,通常有哪几种原因,怎么逐一排查?
  • gcc 和 g++ 在编译 C++ 代码时的区别到底在哪,只用 gcc 会出什么问题?
  • 程序崩溃后,怎么从 core 文件或现场把调用栈还原出来?
  • 怎么给一个已经在运行的进程挂上调试器?

这些问题的答案不依赖任何特定发行版,也不依赖具体项目,属于换到哪台 Linux 机器上都能用的基础能力。

Linux编程:gcc g++ gdb零基础入门Linux C/C++ 编译器调试

从零开始,掌握Linux下C/C++编程与调试

编辑点评

系统讲解gcc、g++、gdb工具,适合初学者快速入门,掌握Linux环境下的C/C++编程和调试技巧。

⭐ 编辑推荐

本课程深入浅出地讲解Linux编程环境下的gcc、g++、gdb编译器和调试器,从基础到进阶,助你成为Linux编程高手。

课程亮点

• 系统学习gcc、g++、gdb工具
• 适合Linux编程初学者
• 掌握C/C++编译和调试技巧

课程目录

Linux编程之gcc g++ gdb 零基础入门 Linux C C++ 编译器 调试器说明.png  [493.5 KB]
5 gcc预处理-D选项.mp4  [42.9 MB]
18 gdb调试器命令使用详解(一).mp4  [166.0 MB]
2 gcc编译器简介与安装.mp4  [33.3 MB]
22 gdb使用gdbserver进行远程调试.mp4  [32.4 MB]
1 GNU操作系统与自由软件简介.mp4  [17.4 MB]
21 gdb附加到进程进行调试.mp4  [29.7 MB]
4 gcc编译链接的流程.mp4  [63.4 MB]
14 gcc编译器优化级别-O选项.mp4  [60.8 MB]
3 gcc编译第一个hello程序.mp4  [39.8 MB]
13 gcc编译器指定C标准-std选项.mp4  [81.4 MB]
19 gdb调试器命令使用详解(二).mp4  [111.7 MB]
16 g++编译器的相关选项.mp4  [35.8 MB]
6 gcc预处理-M -MD -MF选项.mp4  [88.6 MB]
12 gcc将选项传递给链接器-Wl_选项.mp4  [54.2 MB]
8 gcc诊断颜色-fdiagnostics-color选项.mp4  [25.1 MB]
9 gcc搜索头文件目录-I选项.mp4  [37.9 MB]
Code.rar  [100.6 KB]
20 gdb调试多线程详解.mp4  [105.2 MB]
7 gcc编译警告-Wall选项.mp4  [88.0 MB]
17 gdb调试器简介与安装.mp4  [36.6 MB]
15 gcc编译器调试-g选项.mp4  [44.6 MB]
11 gcc链接库-l与库搜索目录-L选项.mp4  [67.9 MB]
10 gcc生成动态库-fPIC -shared选项.mp4  [24.5 MB]
23 gdb 调试core文件详解.mp4  [28.4 MB]

适合人群

  • Linux编程初学者
  • C/C++开发者
  • 系统运维人员

学习收获

熟练使用gcc、g++、gdb
掌握Linux下C/C++编程
提升系统调试能力

祝您学习愉快!

学有所成,前程似锦!