linux操作系统c语言编程入门

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

目录

  1. 为什么选择在 Linux 下学习 C 语言?
  2. 环境准备
    • 1 选择 Linux 发行版
    • 2 安装必要的工具
  3. 你的第一个 C 程序: "Hello, World!"
    • 1 编写代码
    • 2 编译代码
    • 3 运行程序
    • 4 解释代码
  4. 核心概念详解
    • 1 main 函数 - 程序的入口
    • 2 #include - 预处理指令
    • 3 printf 函数 - 标准输出
    • 4 return 语句 - 程序的退出状态
  5. 进阶主题
    • 1 使用 gcc 编译选项
    • 2 使用调试器 gdb
    • 3 使用 Makefile 进行项目管理
  6. 推荐资源与学习路径

为什么选择在 Linux 下学习 C 语言?

  • 系统级编程的摇篮:Linux 内核本身就是用 C 语言编写的,在 Linux 下学习 C,你能最直接地接触到操作系统 API、文件系统、进程、内存管理等核心概念。
  • 强大的开发工具链:Linux 拥有一套业界公认最优秀的免费开发工具,如 GCC (编译器)、GDB (调试器)、Make (构建工具)、Valgrind (内存分析器) 等,这些工具功能强大且灵活。
  • 接近底层:相比 Windows,Linux 提供了更少的抽象层,让你能更清晰地看到 C 代码如何与硬件和操作系统交互。
  • 开源生态:海量的开源项目都是基于 Linux 和 C 语言开发的,阅读这些项目的源码是提升水平的最佳途径之一。

环境准备

1 选择 Linux 发行版

对于初学者,推荐选择用户友好、社区支持好的发行版:

linux操作系统c语言编程入门
(图片来源网络,侵删)
  • Ubuntu:最流行的选择,软件包丰富,社区庞大,非常适合新手。
  • Linux Mint:基于 Ubuntu,界面更传统,开箱即用,体验非常流畅。
  • Fedora:对新技术支持较好,是 Red Hat 系列的先锋。

2 安装必要的工具

你只需要一个文本编辑器和一个 C 编译器,几乎所有的 Linux 发行版都自带了这些工具,或者可以轻松安装。

打开终端

你可以通过快捷键 Ctrl + Alt + T 打开终端,这是你在 Linux 下进行命令行操作的主要窗口。

更新软件包列表

linux操作系统c语言编程入门
(图片来源网络,侵删)

这是一个好习惯,确保你安装的是最新版本的软件。

sudo apt update  # 对于 Debian/Ubuntu 及其衍生版

sudo 表示以超级用户身份执行命令,需要输入你的用户密码)。

安装 GCC 编译器

GCC (GNU Compiler Collection) 是 Linux 下最标准的 C/C++ 编译器。

linux操作系统c语言编程入门
(图片来源网络,侵删)
sudo apt install build-essential

build-essential 是一个元数据包,它会自动为你安装 GCC、G++、Make 等构建 C/C++ 程序所必需的核心工具。

安装一个你喜欢的文本编辑器

  • Vim / Neovim:功能极其强大的编辑器,但学习曲线较陡峭,适合追求效率的开发者。
    sudo apt install vim
  • Nano:简单易用,对新手非常友好。
    sudo apt install nano
  • VS Code:现代的图形化代码编辑器,拥有强大的插件生态,是许多开发者的首选。
    # 下载 .deb 安装包并安装是推荐方式
    wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
    sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
    echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" | sudo tee /etc/apt/sources.list.d/vscode.list
    sudo apt update
    sudo apt install code

你的第一个 C 程序: "Hello, World!"

这是编程世界的传统仪式。

1 编写代码

  1. 在终端中,使用 mkdir 创建一个工作目录,并用 cd 进入它。

    mkdir my-c-project
    cd my-c-project
  2. 使用 nano 编辑器创建一个名为 hello.c 的文件。

    nano hello.c
  3. 在打开的编辑器中,输入以下代码:

    #include <stdio.h>
    int main() {
        printf("Hello, Linux World!\n");
        return 0;
    }
  4. Ctrl + X,然后按 Y,最后按 Enter 来保存并退出 nano

2 编译代码

我们使用 gcc 编译器将 hello.c 转换为可执行文件。

在终端中输入以下命令:

gcc hello.c -o hello
  • gcc:调用 GCC 编译器。
  • hello.c:你的源文件。
  • -o hello:指定输出的可执行文件名为 hello,如果不写 -o,默认会生成一个名为 a.out 的文件。

如果编译成功,终端不会有任何提示,但你会发现当前目录下多了一个名为 hello 的文件,你可以用 ls 命令查看:

ls -l

你会看到类似这样的输出:

-rwxr-xr-x 1 user user 8608 Oct 26 10:30 hello

注意文件权限中的 x,这表示它是一个可执行文件。

3 运行程序

在终端中,输入以下命令来运行你的程序:

./hello
  • 是告诉终端在当前目录下寻找并执行这个程序。

你应该会在终端看到输出:

Hello, Linux World!

恭喜!你已经成功在 Linux 下编写、编译并运行了你的第一个 C 程序!

4 解释代码

  • #include <stdio.h>:这是一个预处理指令,它告诉编译器在编译之前,把标准输入输出库 stdio.h 的内容包含进来,这个库包含了像 printf 这样的函数的声明。
  • int main() { ... }:这是程序的入口函数,当你的程序启动时,操作系统会首先执行 main 函数里的代码。int 表示这个函数在执行完毕后会返回一个整数。
  • printf("Hello, Linux World!\n");:调用 printf 函数,在屏幕上打印引号内的字符串。
    • \n 是一个“换行符”,表示打印完字符串后,光标移动到下一行。
  • return 0;main 函数返回 0,在 Unix/Linux 系统中,程序返回 0 通常表示程序成功执行,没有发生错误,返回非零值则表示发生了错误。

核心概念详解

1 main 函数 - 程序的入口

每个 C 程序都必须有一个 main 函数,它是操作系统开始执行你代码的地方,标准的写法是 int main(void)int main(int argc, char *argv[]),但我们现在从最简单的 int main() 开始。

2 #include - 预处理指令

#include 用于在编译前插入其他文件的内容,尖括号 < > 表示在标准系统目录中查找该文件(如 /usr/include),双引号 则通常表示在当前目录或你指定的路径中查找。

  • <stdio.h>:标准输入输出库,用于处理控制台的输入和输出。
  • <stdlib.h>:标准库,包含内存分配、随机数、进程控制等函数。
  • <string.h>:字符串处理库。
  • <unistd.h>:Unix 标准库,提供 POSIX 操作系统 API,如 sleep()getpid() 等。

3 printf 函数 - 标准输出

printf 是最常用的输出函数,它使用格式化字符串来定义输出的样式。

  • %d:用于打印整数。
  • %f:用于打印浮点数。
  • %c:用于打印单个字符。
  • %s:用于打印字符串。
  • 用于打印一个百分号本身。

示例:

#include <stdio.h>
int main() {
    int age = 25;
    float height = 1.75;
    char name[] = "Alice";
    printf("Name: %s\n", name);
    printf("Age: %d\n", age);
    printf("Height: %.2f meters\n", height); // .2f 表示保留两位小数
    return 0;
}

4 return 语句 - 程序的退出状态

return 语句用于从函数中返回一个值,对于 main 函数,这个返回值会传递给操作系统,称为“退出状态码”或“返回码”。

  • return 0;:成功。
  • return 1; 或其他非零值:失败或出错。

你可以通过 echo $? 命令查看上一个程序的退出状态。

./your_program
echo $?

进阶主题

1 使用 gcc 编译选项

gcc 有很多有用的选项,可以帮你更好地控制编译过程。

  • -Wall:开启所有常见的警告。强烈建议始终使用此选项!
    gcc -Wall hello.c -o hello
  • -g:在可执行文件中加入调试信息,使用 GDB 调试时必须。
    gcc -g -Wall hello.c -o hello
  • -O2-O3:优化代码,生成更高效的可执行文件。
    gcc -O2 -Wall hello.c -o hello

2 使用调试器 gdb

当你的程序出现逻辑错误时,gdb 是你的好朋友。

  1. -g 选项重新编译你的程序

    gcc -g -Wall hello.c -o hello
  2. 启动 gdb

    gdb ./hello
  3. 常用 GDB 命令

    • run (或 r):运行程序。
    • break main (或 b main):在 main 函数处设置一个断点。
    • next (或 n):执行下一行代码(不进入函数)。
    • step (或 s):执行下一行代码(如果遇到函数,则进入函数)。
    • print <变量名> (或 p <变量名>):打印变量的值。
    • continue (或 c):继续运行,直到下一个断点。
    • quit (或 q):退出 GDB。

3 使用 Makefile 进行项目管理

当你的项目文件变多时,每次手动输入 gcc 命令会很麻烦。Makefilemake 命令可以自动化这个过程。

创建一个名为 Makefile 的文件(注意没有后缀名):

# 定义变量
CC = gcc
CFLAGS = -Wall -g
TARGET = hello
SRCS = hello.c
# 默认目标
all: $(TARGET)
# 链接规则
$(TARGET): $(SRCS)
    $(CC) $(CFLAGS) -o $@ $^
# 清理规则
clean:
    rm -f $(TARGET)
# .PHONY 表示这是一个伪目标,不生成文件
.PHONY: all clean

使用方法:

  • 在终端输入 make,它会自动执行 all 目标,编译 hello.c
  • 输入 make clean,会删除生成的可执行文件。

Makefile 看起来复杂,但它能极大地简化大型项目的编译过程。


推荐资源与学习路径

  • 书籍

    • 《C Primer Plus》:C 语言的经典入门书籍,讲解非常详细,适合零基础。
    • 《C 程序设计语言》:C 语言之父写的书,简洁而深刻,适合有一定基础后阅读。
    • 《计算机程序的构造和解释》:虽然主要是讲 Scheme,但其中的思想对学习任何语言都大有裨益。
  • 在线教程

    • Learn C the Hard Way:通过动手实践来学习,强调动手能力。
    • GeeksforGeeks / Tutorialspoint:优秀的 C 语言参考和教程网站,可以快速查找特定知识点。
  • 学习路径建议

    1. 掌握基础:变量、数据类型、运算符、流程控制(if-else, for, while)、函数。
    2. 深入核心:数组、指针(这是 C 语言的精髓,务必花时间搞懂)、字符串处理、结构体。
    3. 内存管理:学习 mallocfree 等动态内存分配函数,理解栈和堆的区别。
    4. 文件 I/O:学习如何使用 fopenfreadfwritefclose 等函数读写文件。
    5. Linux 系统编程:开始探索 unistd.hsys/stat.h 等头文件中的系统调用,学习进程控制、信号处理、多线程等。

祝你在 Linux C 语言的世界里探索愉快!这是一个充满挑战和乐趣的旅程。

-- 展开阅读全文 --
头像
c语言从入门到精通实例版 pdf
« 上一篇 2025-12-22
织梦转wordpress如何自动实现?
下一篇 » 2025-12-22

相关文章

取消
微信二维码
支付宝二维码

目录[+]