目录
- 第一步:安装必要的工具
- 第二步:你的第一个 C 程序 ("Hello, World!")
- 第三步:编译和运行程序
- 第四步:核心概念回顾
- 第五步:常用 Linux C 开发工具
- 第六步:进阶主题与最佳实践
第一步:安装必要的工具
在大多数现代 Linux 发行版上,你只需要安装一个名为 build-essential 的元包,它会自动安装所有编译 C/C++ 程序所需的核心工具。

检查 GCC 编译器是否已安装
打开你的终端,输入以下命令:
gcc --version
如果已经安装,你会看到 GCC 的版本信息,如果提示 command not found,则需要安装。
安装编译工具链
根据你的 Linux 发行版,选择对应的命令:
对于 Debian / Ubuntu / Mint:

sudo apt update sudo apt install build-essential
对于 Fedora / CentOS / RHEL:
sudo dnf groupinstall "Development Tools" # 或者 sudo yum groupinstall "Development Tools"
对于 Arch Linux:
sudo pacman -S base-devel
build-essential 或 Development Tools 包通常包括:
gcc: GNU C 编译器,将你的 C 源代码转换成机器码。g++: GNU C++ 编译器。make: 一个自动化构建工具,用于管理项目的编译过程。libc6-dev/glibc-devel: C 语言标准库的头文件和链接库。- 其他一些有用的开发工具。
第二步:你的第一个 C 程序 ("Hello, World!")
现在我们来创建一个经典的 "Hello, World!" 程序。

创建源代码文件
打开你喜欢的文本编辑器(如 vim, nano, gedit 或 VS Code),这里我们使用 nano,因为它对新手非常友好。
nano hello.c
编写代码
在打开的编辑器中,输入以下代码:
#include <stdio.h> // 包含标准输入输出库,提供 printf 函数
int main() {
// printf 函数用于在控制台打印文本
// \n 表示换行
printf("Hello, Linux World!\n");
// main 函数返回 0 表示程序成功执行完毕
return 0;
}
代码解释:
#include <stdio.h>: 这是一个预处理指令,告诉编译器在编译前将stdio.h文件的内容包含进来。stdio.h是标准输入输出库,它提供了像printf(打印) 和scanf(读取) 这样的函数。int main(): 这是程序的入口点,当你的程序运行时,操作系统会首先执行main函数中的代码。int表示这个函数会返回一个整数值。printf(...): 调用printf函数来在屏幕上显示字符串。return 0;: 返回值0是一个约定俗成的信号,告诉操作系统程序已经成功执行完毕,非零值通常表示程序遇到了错误。
保存并退出
在 nano 中,按 Ctrl + X,然后按 Y 确认保存,最后按 Enter 键确认文件名。
第三步:编译和运行程序
现在你有了源代码文件 hello.c,接下来需要把它变成一个可执行的程序。
编译
使用 gcc 命令来编译你的文件。
gcc hello.c -o hello
命令解释:
gcc: 调用 GCC 编译器。hello.c: 这是你的源文件。-o hello: 这是一个选项。-o指定了输出文件的名字,如果不加-o,GCC 默认会生成一个名为a.out的文件,这里我们将其命名为hello。
如果编译成功,你不会看到任何错误信息,并且当前目录下会多出一个名为 hello 的文件,你可以用 ls 命令查看:
ls -l # 你应该会看到类似这样的输出: # -rwxr-xr-x 1 user user 8608 Oct 26 10:30 hello # -rw-r--r-- 1 user user 45 Oct 26 10:28 hello.c
注意 hello 文件前面的权限位 -rwxr-xr-x,其中的 x (executable) 表示它是一个可执行文件。
运行
使用 来运行当前目录下的可执行文件。
./hello
注意: 是必须的,它告诉 shell 在当前目录下查找这个程序,否则,shell 会在系统的环境变量 PATH 定义的路径中查找,很可能找不到你的 hello 程序。
你应该会在终端看到输出:
Hello, Linux World!
恭喜!你已经成功地在 Linux 下用 C 语言编写、编译并运行了你的第一个程序!
第四步:核心概念回顾
- 源代码: 你用文本编辑器写的
.c文件,是人类可读的。 - 编译器: 如
gcc,它将源代码翻译成计算机能理解的机器码(目标文件,通常是.o文件)。 - 链接器:
gcc在编译过程中也扮演了链接器的角色,它会将你的目标代码和 C 标准库(以及其他需要的库)链接在一起,生成一个最终的可执行文件。 - 可执行文件: 最终生成的二进制文件,可以直接被操作系统加载和运行。
- 头文件: 如
stdio.h,包含了函数的声明、宏定义等,告诉编译器如何使用这些函数。 - 库: 包含了预编译好的函数代码(如
printf的实际实现)的文件。
第五步:常用 Linux C 开发工具
当你写的程序越来越大时,手动编译会变得很麻烦,这时就需要更专业的工具。
Make 和 Makefile
make 是一个自动化构建工具,你只需要写一个名为 Makefile 的配置文件,告诉 make 如何编译你的项目。
示例 Makefile:
假设你的项目有两个源文件 main.c 和 utils.c。
# 定义变量
CC = gcc
CFLAGS = -Wall -Wextra -g
TARGET = my_program
SRCS = main.c utils.c
OBJS = $(SRCS:.c=.o)
# 默认目标
all: $(TARGET)
# 链接规则:从 .o 文件生成最终可执行文件
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^
# 编译规则:从 .c 文件生成 .o 文件
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
# 清理规则,删除所有生成的文件
clean:
rm -f $(OBJS) $(TARGET)
如何使用:
make或make all: 编译整个项目,生成my_program。make clean: 清理掉所有编译生成的中间文件(.o文件)和最终可执行文件。
GDB (GNU Debugger)
当你的程序出现 Bug 时,gdb 是你的好朋友,它是一个强大的命令行调试器。
使用步骤:
- 编译时加上调试信息: 使用
-g选项编译。gcc -g hello.c -o hello
- 启动 GDB:
gdb ./hello
- 常用 GDB 命令:
(gdb) break main或(gdb) b main: 在main函数处设置断点。(gdb) run或(gdb) r: 运行程序,程序会在断点处暂停。(gdb) next或(gdb) n: 执行下一行代码(不进入函数)。(gdb) step或(gdb) s: 执行下一行代码(如果遇到函数,则进入函数)。(gdb) print i或(gdb) p i: 打印变量i的值。(gdb) continue或(gdb) c: 继续运行,直到下一个断点。(gdb) quit或(gdb) q: 退出 GDB。
Valgrind
Valgrind 是一套用于调试和分析 Linux 程序的强大工具集,最常用的工具是 Memcheck,用于检测内存泄漏、非法内存访问等问题。
使用方法:
valgrind --leak-check=full ./your_program
如果你的程序有内存泄漏,Valgrind 会给出详细的报告,告诉你哪块内存没有被释放。
第六步:进阶主题与最佳实践
-
使用专业的 IDE 或编辑器
- VS Code: 安装 C/C++ 扩展,可以获得智能提示、代码补全、调试集成等一流体验。
- CLion: JetBrains 出品的付费 C/C++ IDE,功能非常强大。
- Vim/Neovim + 插件: 高度可定制化的编辑器,是许多开发者的首选。
-
版本控制
- Git: 是现代软件开发的必备工具,用它来管理你的代码,可以轻松地进行版本回滚、分支开发和团队协作。
- GitHub / GitLab: 提供代码托管和协作平台。
-
阅读 Linux 源码和手册页
- 手册页: Linux 系统自带的详细文档,在终端输入
man printf即可查看printf函数的详细用法、参数和示例。 - Linux Kernel Archives: 如果你想了解操作系统底层的实现,阅读 Linux 内核源码是最好的方式。
- 手册页: Linux 系统自带的详细文档,在终端输入
-
学习 POSIX 标准库
- Linux 下的 C 编程主要遵循 POSIX (Portable Operating System Interface) 标准,学习
unistd.h,sys/stat.h,pthread.h等头文件中的函数,是编写跨平台 Linux 应用程序的关键。
- Linux 下的 C 编程主要遵循 POSIX (Portable Operating System Interface) 标准,学习
在 Linux 下用 C 语言编程,本质上就是利用强大的命令行工具链(gcc, make, gdb 等)来管理和构建代码。
- 入门:
gcc hello.c -o hello和./hello。 - 进阶: 使用
Makefile自动化构建,使用gdb调试 Bug,使用Valgrind检查内存问题。 - 专业: 结合
Git进行版本控制,使用VS Code/CLion等现代工具,深入学习 POSIX API。
希望这个指南能帮助你顺利开启在 Linux 下的 C 语言编程之旅!祝你编码愉快!
