如何在Linux CentOS下编写C语言程序?

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

总览流程

整个过程可以分为以下几个主要步骤:

Linuxcentos编写C语言
(图片来源网络,侵删)
  1. 检查环境:确认你的 CentOS 系统已经安装了 C 语言编译器(通常是 GCC)。
  2. 编写代码:使用文本编辑器创建一个 .c 源文件。
  3. 编译程序:使用 GCC 编译器将源代码转换成可执行文件。
  4. 运行程序:在终端中执行编译生成的可执行文件。
  5. 调试与进阶:介绍如何使用调试器(GDB)和项目管理工具(Make)。

第一步:检查和安装编译器 (GCC)

GCC (GNU Compiler Collection) 是 Linux 下最常用的 C/C++ 编译器,在 CentOS 上,我们可以使用 yumdnf 包管理器来安装它。

检查 GCC 是否已安装

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

gcc --version
  • 如果已经安装:你会看到 GCC 的版本信息,类似这样:
    gcc (GCC) 11.2.1 20250219 (Red Hat 11.2.1-9)
    Copyright (C) 2025 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  • 如果未安装:你会提示 command not found: gcc

安装 GCC

如果你的系统上没有 GCC,可以轻松地安装它。

  • 对于 CentOS 7 及更早版本,使用 yum

    Linuxcentos编写C语言
    (图片来源网络,侵删)
    # 更新软件包列表
    sudo yum update -y
    # 安装 gcc 和 gcc-c++ (C++ 编译器)
    sudo yum groupinstall "Development Tools" -y

    groupinstall "Development Tools" 是一个推荐的做法,它会一次性安装所有开发工具,包括 GCC, GDB, Make 等。

  • 对于 CentOS 8 及更新版本,使用 dnf

    # 更新软件包列表
    sudo dnf update -y
    # 安装 Development Tools 组
    sudo dnf groupinstall "Development Tools" -y

安装完成后,再次运行 gcc --version 就能看到版本信息了。


第二步:编写你的第一个 C 程序

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

Linuxcentos编写C语言
(图片来源网络,侵删)

选择文本编辑器

你可以使用任何你喜欢的文本编辑器,对于新手,推荐使用 vimnano,因为它们是命令行自带的。

  • 使用 nano (简单易用)

    nano hello.c

    这会创建一个名为 hello.c 的新文件,并打开 nano 编辑器。

  • 使用 vim (功能强大,但需要学习)

    vim hello.c

    进入 vim 后,按 i 键进入插入模式,然后才能输入代码。

输入 C 代码

在编辑器中输入以下代码:

#include <stdio.h>
int main() {
    // printf 函数用于在屏幕上打印文本
    printf("Hello, Linux World!\n");
    // main 函数返回 0 表示程序成功执行
    return 0;
}

保存并退出

  • nano

    1. Ctrl + X
    2. 它会询问你是否要保存,按 Y (Yes)。
    3. 按回车键确认文件名。
  • vim

    1. Esc 键退出插入模式。
    2. 输入 wq 然后按回车。(w 代表 write/保存, q 代表 quit/退出)。

你的 hello.c 文件就已经创建好了,你可以用 ls 命令查看它:

ls -l hello.c

第三步:编译 C 程序 (使用 GCC)

我们使用 gcc 命令将 hello.c 编译成机器可以执行的可执行文件。

gcc hello.c -o hello

让我们分解这个命令:

  • gcc: 调用 GCC 编译器。
  • hello.c: 这是你的源文件
  • -o: 这是一个选项,意思是 "output" (输出)。
  • hello: 这是你要生成的可执行文件的名称,如果不指定 -o,GCC 默认会生成一个名为 a.out 的文件。

编译成功后,你不会看到任何提示信息,但目录下会多出一个文件,用 ls 查看:

ls -l

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

-rw-r--r--. 1 user user   58 Oct 26 10:30 hello.c
-rwxr-xr-x. 1 user user 16744 Oct 26 10:31 hello  <-- 这个就是可执行文件

注意 hello 文件的权限,它有 x (execute) 权限,这意味着你可以运行它。


第四步:运行你的程序

运行刚刚生成的可执行文件非常简单,只需要在终端中输入它的路径即可。

./hello
  • 是一个非常重要的符号,它代表“当前目录”,因为在 Linux 中,如果你直接输入 hello,系统会去 PATH 环境变量里找这个命令,而你的 hello 文件在当前目录,所以必须用 来告诉系统“就在这里找”。

预期输出:

Hello, Linux World!

恭喜!你已经成功地在 CentOS 上编写、编译并运行了你的第一个 C 语言程序。


第五步:进阶主题

调试程序 (使用 GDB)

当你的程序出现 bug 时,你需要一个调试器,GDB (GNU Debugger) 是 Linux 下最强大的调试工具。

示例: 我们创建一个有 bug 的程序 buggy.c

#include <stdio.h>
int main() {
    int a = 10;
    int b = 20;
    int sum = a + b; // 故意写成 a - b
    printf("The sum is: %d\n", sum);
    return 0;
}

调试步骤:

  1. 编译时加上 -g 选项:这个选项会生成包含调试信息的可执行文件。

    gcc buggy.c -o buggy -g
  2. 启动 GDB

    gdb buggy
  3. 在 GDB 中设置断点:我们想在 printf 函数那里停下。

    (gdb) break main
  4. 运行程序

    (gdb) run

    程序会运行到 main 函数的开头并暂停。

  5. 单步执行

    (gdb) next  # 执行下一行代码
  6. 查看变量值

    (gdb) print a  # 查看变量 a 的值
    $1 = 10
    (gdb) print b
    $2 = 20
    (gdb) print sum
    $3 = -10  # 你会立刻发现问题!
  7. 退出 GDB

    (gdb) quit

使用 Makefile 进行项目管理

当你的项目变得复杂,有多个源文件时,手动使用 gcc 命令会变得很麻烦。makeMakefile 可以自动化编译过程。

示例项目结构:

my_project/
├── main.c
├── utils.c
└── utils.h
  • utils.h (头文件)

    #ifndef UTILS_H
    #define UTILS_H
    int add(int a, int b);
    #endif
  • utils.c (函数实现)

    #include "utils.h"
    int add(int a, int b) {
        return a + b;
    }
  • main.c (主程序)

    #include <stdio.h>
    #include "utils.h"
    int main() {
        int result = add(5, 3);
        printf("The result is: %d\n", result);
        return 0;
    }

创建 Makefile

my_project 目录下创建一个名为 Makefile 的文件(注意大小写和没有后缀名)。

# 定义变量
CC = gcc
CFLAGS = -Wall -g
TARGET = my_program
SRCS = main.c utils.c
OBJS = $(SRCS:.c=.o)
# 默认目标,当只输入 make 时执行
all: $(TARGET)
# 链接规则:将 .o 文件链接成最终的可执行文件
$(TARGET): $(OBJS)
    $(CC) $(CFLAGS) -o $@ $^
# 编译规则:将 .c 文件编译成 .o 文件
%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@
# 清理生成的文件
clean:
    rm -f $(OBJS) $(TARGET)
# .PHONY 表示这些目标不是由文件生成的
.PHONY: all clean

使用 Makefile:

  1. 编译整个项目

    make

    make 会自动读取 Makefile 并执行相应的命令来编译所有源文件并链接它们。

  2. 运行程序

    ./my_program

    输出:

    The result is: 8
  3. 清理文件

    make clean

    这个命令会删除所有 .o 文件和最终的可执行文件,方便你重新开始。


在 CentOS 上进行 C 语言开发,核心工具链就是 GCC (编译器) + GDB (调试器) + Make (构建工具),掌握了以上步骤,你就已经具备了在 CentOS 上进行 C 语言开发的基本能力,随着你项目的变大,Makefile 会成为你不可或缺的好帮手,祝你编程愉快!

-- 展开阅读全文 --
头像
dede class如何固定顺序调用?
« 上一篇 今天
dede source为空时如何实现不显示?
下一篇 » 今天

相关文章

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

目录[+]