Ubuntu下C语言编译器怎么用?

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

在 Ubuntu 上,最常用、最标准的 C 语言编译器是 GCC (GNU Compiler Collection),你不需要单独下载它,因为它已经包含在 Ubuntu 的标准开发工具包中。

ubuntu c语言编译器
(图片来源网络,侵删)

安装编译器工具链

虽然你的 Ubuntu 系统可能已经预装了 GCC,但为了确保拥有完整的编译环境(包括编译器、链接器、调试器等),最推荐的做法是安装 build-essential 这个元数据包。

使用 apt(推荐,适用于所有现代 Ubuntu 版本)

打开你的终端(Terminal),然后执行以下命令:

# 1. 更新软件包列表(这是一个好习惯)
sudo apt update
# 2. 安装 build-essential 包
sudo apt install build-essential

这个命令会自动安装 GCC、G++ (C++ 编译器)、make 以及其他一些构建软件所必需的核心工具。

手动安装 GCC

如果你想单独安装 GCC 或查看版本,也可以这样做:

ubuntu c语言编译器
(图片来源网络,侵删)
# 安装 gcc
sudo apt install gcc
# 如果需要 C++ 编译器
sudo apt install g++
# 安装 GDB 调试器
sudo apt install gdb

如何验证安装?

安装完成后,你可以通过以下命令检查 GCC 的版本,以确认安装是否成功:

gcc --version

你应该会看到类似下面的输出,版本号可能不同:

gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
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.

编译和运行 C 程序的完整流程

这里我们通过一个经典的 "Hello, World!" 示例来走一遍完整的流程。

步骤 1:创建源代码文件

使用你喜欢的文本编辑器(如 vim, nano, 或者 VS Code)创建一个名为 hello.c 的文件。

ubuntu c语言编译器
(图片来源网络,侵删)
# 使用 nano 编辑器(简单易用)
nano hello.c

将以下代码粘贴到 hello.c 文件中,然后保存并退出(在 nano 中是 Ctrl+X,然后按 Y,再按 Enter)。

#include <stdio.h>
int main() {
    printf("Hello, Ubuntu!\n");
    return 0;
}

步骤 2:编译源代码

使用 gcc 命令来编译 hello.c 文件。

gcc hello.c

执行这个命令后,gcc 会:

  1. 读取 hello.c 源文件。
  2. 进行预处理、编译、汇编和链接。
  3. 如果没有错误,它会生成一个默认的可执行文件,在 Linux 中这个文件通常名为 a.out

你可以使用 ls 命令来查看当前目录下的文件:

ls
# 你应该会看到 hello.c 和 a.out

步骤 3:运行可执行文件

生成的 a.out 文件就是一个可以直接运行的程序,在终端中输入以下命令来执行它:

./a.out

注意: 是必需的,它告诉终端在当前目录下查找并执行这个程序,如果你只输入 a.out,系统可能会找不到它。

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

Hello, Ubuntu!

步骤 4:指定输出文件名(良好习惯)

默认的输出文件名 a.out 不够直观,我们可以使用 -o 选项来指定一个更有意义的文件名,hello

# -o 后面跟着你想要的输出文件名
gcc hello.c -o hello

使用 ls 查看,你会看到 hello 文件(而不是 a.out)。

ls
# 你会看到 hello.c 和 hello

运行它:

./hello

输出结果是一样的。指定输出文件名是一个非常重要的好习惯,尤其是在处理多个源文件的项目时。


常用 GCC 编译选项

GCC 提供了非常丰富的选项来控制编译过程,这里列出一些最常用的:

选项 全称 描述 示例
-o --output= 指定输出的可执行文件名。 gcc main.c -o my_program
-c --compile 只编译不链接,生成目标文件 (.o 文件)。 gcc -c main.c -o main.o
-g --generate-debug 在可执行文件中包含调试信息,用于 GDB 等调试器。 gcc -g hello.c -o hello_debug
-O0, -O1, -O2, -O3 --optimize= 设置优化级别。-O0 无优化(编译最快,调试方便),-O2 是常用的优化级别,-O3 优化级别最高。 gcc -O2 hello.c -o hello_optimized
-Wall --warn-all 启用所有常见的警告。强烈推荐在开发时使用 gcc -Wall hello.c -o hello
-std= --standard= 指定 C 语言标准,如 c89, c99, c11, c17 (或 gnu89, gnu99 等)。 gcc -std=c11 hello.c -o hello

综合示例:

一个专业的、推荐的编译命令应该是这样的:

# 使用 C11 标准,开启所有警告,包含调试信息,并进行优化
gcc -std=c11 -Wall -g -O2 hello.c -o hello

使用 Make 进行项目管理

当你的项目变得越来越大,有多个 .c 文件和 .h 文件时,在命令行中手动编译会变得非常繁琐和容易出错,这时,Make 工具就派上用场了。

Make 通过一个名为 Makefile 的文件来管理项目的编译规则。

创建一个简单的多文件项目

假设你有以下文件:

  • 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

在项目根目录下创建一个名为 Makefile 的文件(注意没有后缀名)。

# 定义变量
CC = gcc
CFLAGS = -Wall -g -std=c11
TARGET = my_app
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)

Makefile 语法解释:

  • CC = gcc:定义一个变量 CC,值为 gcc
  • TARGET = my_app:定义最终要生成的可执行文件名。
  • SRCSOBJS:自动获取所有源文件和对应的目标文件。
  • all: $(TARGET)all 是一个伪目标,它依赖于 $(TARGET) (即 my_app),这意味着执行 make 时,会先尝试构建 my_app
  • $(TARGET): $(OBJS)my_app 的构建规则,它依赖于所有的 .o 文件,执行时,make 会先确保所有 .o 文件都已生成。
  • %.o: %.c:这是一个模式规则,表示如何从任何 .c 文件生成对应的 .o 文件。
  • , $<, $^:这些都是自动化变量。
    • 代表当前规则的目标文件名。
    • $<:代表第一个依赖文件名。
    • $^:代表所有的依赖文件名。

使用 Make

在你的项目目录下,只需运行 make 命令:

make

make 会读取 Makefile 并自动执行必要的编译和链接步骤:

gcc -Wall -g -std=c11 -c main.c -o main.o
gcc -Wall -g -std=c11 -c utils.c -o utils.o
gcc -Wall -g -std=c11 -o my_app main.o utils.o

然后运行你的程序:

./my_app

输出:

The result is: 8

如果你想清理掉所有编译生成的文件,只需运行:

make clean

任务 命令/工具 描述
安装环境 sudo apt install build-essential 安装 GCC, G++, make 等核心工具。
编译单个文件 gcc source.c -o program source.c 编译成名为 program 的可执行文件。
运行程序 ./program 执行当前目录下的 program
专业编译 gcc -std=c11 -Wall -g source.c -o program 推荐的编译参数,包含标准、警告和调试信息。
项目管理 make 使用 Makefile 自动化管理多文件项目的编译。

希望这份详细的指南能帮助你在 Ubuntu 上顺利地进行 C 语言开发!

-- 展开阅读全文 --
头像
2025蓝桥杯C语言试题考什么?
« 上一篇 前天
如何实现手机站与主站内容同步更新?
下一篇 » 前天

相关文章

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

目录[+]