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 中定义的规则来进行构建的。这种自动化的构建过程可以大大提高开发效率,并确保项目的一致性和可重复性。

相关文章
|
2天前
|
Shell
Makefile函数的使用(1)
Makefile函数的使用(1)
11 0
|
2天前
|
安全 Linux Apache
40、命令执行介绍
40、命令执行介绍
18 0
|
2天前
|
Shell Go
go 执行shell脚本 在指定目录下执行指定脚本
go 执行shell脚本 在指定目录下执行指定脚本
35 5
|
12月前
|
Shell Linux
在 Shell 脚本中执行语法检查调试模式
在 Shell 脚本中执行语法检查调试模式
131 0
|
12月前
|
存储 NoSQL C语言
gdb调试常见命令详细总结
gdb调试常见命令详细总结
368 0
|
Shell
shell:Makefile从shell脚本中导入变量
shell:Makefile从shell脚本中导入变量
152 0
|
编译器 C语言 C++
Makefile中常见的gcc编译参数
Makefile中常见的gcc编译参数
340 0
|
NoSQL Unix Shell
gdb调试命令的使用及总结
来源:http://www.jb51.net/article/36393.htm 参考:http://www.cnblogs.com/hankers/archive/2012/12/07/2806836.html 参考:http://wiki.ubuntu.org.cn/%E7%94%A8GDB%E8%B0%83%E8%AF%95%E7%A8%8B%E5%BA%8F 100个gdb技
7902 0