Makefile中maake命令的执行

简介: Makefile中maake命令的执行

Makefile中make命令的执行

执行 Makefile 的关键命令是 make。当你在命令行中输入 make 后,系统会按照 Makefile 中定义的规则来执行相应的操作。下面是一个示例 Makefile 及其执行过程的说明:

CC = gcc
CFLAGS = -Wall -O2
SRC_DIR = src
BUILD_DIR = build
TARGET = my_program
$(BUILD_DIR)/$(TARGET): $(BUILD_DIR)/main.o $(BUILD_DIR)/foo.o $(BUILD_DIR)/bar.o
    $(CC) $^ -o $@
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
    $(CC) $(CFLAGS) -c $< -o $@
all: $(BUILD_DIR)/$(TARGET)
clean:
    rm -rf $(BUILD_DIR)/*.o $(BUILD_DIR)/$(TARGET)



执行过程示例:

1.开始执行:
当你在命令行中输入 make 后,系统会在当前目录下寻找名为 Makefile 或 makefile 的文件,并开始执行。
2.检查依赖关系:
首先,make 会检查目标文件 $(BUILD_DIR)/$(TARGET) 是否存在以及其依赖关系是否满足。在这个示例中,目标文件依赖于 main.o、foo.o 和 bar.o 这三个文件。
3.检查依赖文件是否存在:
make 会检查这些依赖文件是否存在或者是否需要重新构建。如果依赖文件不存在,或者依赖文件的时间戳比目标文件新,那么就需要重新构建这些依赖文件。
4.执行规则:
如果需要重新构建依赖文件,make 将会按照规则执行。在这个示例中,make 会先生成 main.o、foo.o 和 bar.o 这三个目标文件,然后再链接它们生成最终的可执行文件 my_program。
5.生成目标文件:
make 根据规则,使用编译器将源文件编译成目标文件。例如,main.o 的生成命令是 gcc -Wall -O2 -c src/main.c -o build/main.o。类似地,foo.o 和 bar.o 也会分别生成。
6.链接目标文件:
所有的目标文件都生成后,make 将使用链接器将这些目标文件链接成最终的可执行文件。在这个示例中,链接命令是 gcc build/main.o build/foo.o build/bar.o -o build/my_program。
7.完成构建:
一旦链接完成,make 就会输出构建成功的消息,说明最终的目标文件已经生成。
8.清理操作:
如果执行 make clean,则会删除所有的目标文件和可执行文件,以便下一次构建时从干净的状态开始。

 通过以上示例,你可以了解 make 命令在执行过程中是如何根据 Makefile 中定义的规则来进行构建的。这种自动化的构建过程可以大大提高开发效率,并确保项目的一致性和可重复性。

相关文章
|
6月前
|
安全 Linux Apache
40、命令执行介绍
40、命令执行介绍
37 0
|
6月前
|
Shell Go
go 执行shell脚本 在指定目录下执行指定脚本
go 执行shell脚本 在指定目录下执行指定脚本
79 5
|
2月前
|
Windows
GMER原来是这样执行命令行命令的……
GMER原来是这样执行命令行命令的……
outreg2的命令代码详解
Stata结果输出:outreg2命令详解
|
11月前
|
JavaScript
报错:‘nodemon‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
报错:‘nodemon‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
vscode 编辑 makefile 文件,执行make操作时显示“Makefile:5: *** 遗漏分隔符 。 停止。“(终极解决办法)
vscode 编辑 makefile 文件,执行make操作时显示“Makefile:5: *** 遗漏分隔符 。 停止。“(终极解决办法)
|
编译器 C语言 C++
Makefile中常见的gcc编译参数
Makefile中常见的gcc编译参数
396 0
|
C语言 C++ 编译器