3.3. 使用 Makefile


要构建由多个源文件组成的复杂程序,请利用 名为 Makefile 的配置文件,该文件控制如何编译程序的组件并构建最终可执行文件。Makefile 也可以包含清理工作目录、安装和卸载程序文件以及其他操作的说明。

make 自动使用当前目录中名为 GNUmakefilemakefileMakefile 的文件。要指定另一个文件名,请使用 the -f 选项:

$ make -f make_file
Copy to Clipboard Toggle word wrap

描述 Makefile 语法的详细信息超出了本指南的范围。请参阅 GNU make,上游 GNU make manual,它提供 GNU make 实用程序、Makefile 语法及其用法的深入描述。

作为安装的一部分,也可以以 Texinfo 格式提供完整的 make 手册。查看这个手册:

$ scl enable devtoolset-9 'info make'
Copy to Clipboard Toggle word wrap

例 3.2. 使用 Makefile 构建 C 程序

考虑以下名为 Makefile 的通用 Makefile,用于构建 例 3.1 “使用 make 构建 C 程序” 中引入的简单 C 程序。Makefile 定义一些变量并指定四个 规则,它们由 目标 及其 方法 组成。请注意,配有方法的行必须以 TAB 字符开头:

CC=gcc
CFLAGS=-c -Wall
SOURCE=hello.c
OBJ=$(SOURCE:.c=.o)
EXE=hello

all: $(SOURCE) $(EXE)

$(EXE): $(OBJ)
        $(CC) $(OBJ) -o $@

.o: .c
        $(CC) $(CFLAGS) $< -o $@

clean:
        rm -rf $(OBJ) $(EXE)
Copy to Clipboard Toggle word wrap

要使用此 Makefile 构建 hello.c 程序,请运行 make 工具:

$ scl enable devtoolset-9 'make'
gcc -c -Wall hello.c -o hello.o
gcc hello.o -o hello
Copy to Clipboard Toggle word wrap

这会在当前工作目录中创建一个新的对象文件 hello.o 和一个名为 hello 的新二进制文件。

要清理工作目录,请运行:

$ scl enable devtoolset-9 'make clean'
rm -rf hello.o hello
Copy to Clipboard Toggle word wrap

这会从工作目录中删除对象和二进制文件。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat