$(addprefix $(obj)/,init.o kernel.o initrd.o)
时间: 2024-06-05 22:09:25 浏览: 10
这是一个 Makefile 中使用的函数,它的作用是在每个文件名前面添加一个指定的路径。其中,$(obj) 是一个变量,表示目标文件的输出路径。例如,如果 $(obj) 的值为 obj,那么这个函数的展开结果就是 obj/init.o obj/kernel.o obj/initrd.o。这通常用于指定编译后的目标文件存放的位置。
相关问题
$(obj)/bootp: $(src)/bootp.lds $(addprefix $(obj)/,init.o kernel.o initrd.o) FORCE $(call if_changed,ld)
这是一个 Makefile 规则,用于构建 bootp 目标文件。它依赖于以下文件:
- $(src)/bootp.lds
- $(obj)/init.o
- $(obj)/kernel.o
- $(obj)/initrd.o
它使用 ld 命令将这些文件链接成一个可执行文件,并将输出文件写入 $(obj)/bootp 中。前面的 FORCE 命令是为了强制执行该规则,即使目标文件已经存在。整个规则可以理解为:如果有任何一个依赖文件被更新,或者目标文件不存在,那么就执行 ld 命令,将所有依赖文件链接成一个可执行文件。
OBJS := $(addprefix $(BUILD)/, $(SRCS:.c=.o))
这是一个 Makefile 中的一行代码,它定义了一个变量 OBJS,其中包含了 $(BUILD) 目录下所有 .c 文件编译后生成的 .o 文件。
具体来说,$(SRCS:.c=.o) 表示将 $(SRCS) 变量中所有以 .c 结尾的文件名替换为以 .o 结尾的文件名。然后,addprefix 函数将 $(BUILD)/ 作为前缀添加到每个 .o 文件名前面,最终形成了一个完整的文件路径列表。
例如,若 SRCS 变量包含了 main.c 和 utils.c,BUILD 变量为 build,则 OBJS 变量将会被赋值为 build/main.o build/utils.o。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)