Linux下C语言编程如何入门?

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 C语言 正文

目录

  1. 第一步:安装必要的工具
  2. 第二步:你的第一个 C 程序 ("Hello, World!")
  3. 第三步:编译和运行程序
  4. 第四步:核心概念回顾
  5. 第五步:常用 Linux C 开发工具
  6. 第六步:进阶主题与最佳实践

第一步:安装必要的工具

在大多数现代 Linux 发行版上,你只需要安装一个名为 build-essential 的元包,它会自动安装所有编译 C/C++ 程序所需的核心工具。

怎么在linux下用C语言
(图片来源网络,侵删)

检查 GCC 编译器是否已安装

打开你的终端,输入以下命令:

gcc --version

如果已经安装,你会看到 GCC 的版本信息,如果提示 command not found,则需要安装。

安装编译工具链

根据你的 Linux 发行版,选择对应的命令:

对于 Debian / Ubuntu / Mint:

怎么在linux下用C语言
(图片来源网络,侵删)
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-essentialDevelopment Tools 包通常包括:

  • gcc: GNU C 编译器,将你的 C 源代码转换成机器码。
  • g++: GNU C++ 编译器。
  • make: 一个自动化构建工具,用于管理项目的编译过程。
  • libc6-dev / glibc-devel: C 语言标准库的头文件和链接库。
  • 其他一些有用的开发工具。

第二步:你的第一个 C 程序 ("Hello, World!")

现在我们来创建一个经典的 "Hello, World!" 程序。

怎么在linux下用C语言
(图片来源网络,侵删)

创建源代码文件

打开你喜欢的文本编辑器(如 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.cutils.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)

如何使用:

  • makemake all: 编译整个项目,生成 my_program
  • make clean: 清理掉所有编译生成的中间文件(.o 文件)和最终可执行文件。

GDB (GNU Debugger)

当你的程序出现 Bug 时,gdb 是你的好朋友,它是一个强大的命令行调试器。

使用步骤:

  1. 编译时加上调试信息: 使用 -g 选项编译。
    gcc -g hello.c -o hello
  2. 启动 GDB:
    gdb ./hello
  3. 常用 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 会给出详细的报告,告诉你哪块内存没有被释放。


第六步:进阶主题与最佳实践

  1. 使用专业的 IDE 或编辑器

    • VS Code: 安装 C/C++ 扩展,可以获得智能提示、代码补全、调试集成等一流体验。
    • CLion: JetBrains 出品的付费 C/C++ IDE,功能非常强大。
    • Vim/Neovim + 插件: 高度可定制化的编辑器,是许多开发者的首选。
  2. 版本控制

    • Git: 是现代软件开发的必备工具,用它来管理你的代码,可以轻松地进行版本回滚、分支开发和团队协作。
    • GitHub / GitLab: 提供代码托管和协作平台。
  3. 阅读 Linux 源码和手册页

    • 手册页: Linux 系统自带的详细文档,在终端输入 man printf 即可查看 printf 函数的详细用法、参数和示例。
    • Linux Kernel Archives: 如果你想了解操作系统底层的实现,阅读 Linux 内核源码是最好的方式。
  4. 学习 POSIX 标准库

    • Linux 下的 C 编程主要遵循 POSIX (Portable Operating System Interface) 标准,学习 unistd.h, sys/stat.h, pthread.h 等头文件中的函数,是编写跨平台 Linux 应用程序的关键。

在 Linux 下用 C 语言编程,本质上就是利用强大的命令行工具链(gcc, make, gdb 等)来管理和构建代码。

  • 入门: gcc hello.c -o hello./hello
  • 进阶: 使用 Makefile 自动化构建,使用 gdb 调试 Bug,使用 Valgrind 检查内存问题。
  • 专业: 结合 Git 进行版本控制,使用 VS Code/CLion 等现代工具,深入学习 POSIX API。

希望这个指南能帮助你顺利开启在 Linux 下的 C 语言编程之旅!祝你编码愉快!

-- 展开阅读全文 --
头像
dede手机端如何实时预览?
« 上一篇 今天
dede手机站模板如何制作?
下一篇 » 今天
取消
微信二维码
支付宝二维码

目录[+]