本篇博文是对博文 Makefile文件编写的学习记录(以IMX6ULL开发板的Makefile文件和Makefile.build文件来进行学习)的补充。
关于顶层Make文件中的语句obj-y += display/
和子目录Make文件中的语句obj-y += disp_manager.o
可不可以像下面这样理解:
语句obj-y += display/
表示子目录中的目标文件将参与最终生成文件的构建,而具体的子目录display中会生成哪些目标文件将由display中的Makefile文件决定。
语句obj-y += disp_manager.o
表示由目录display中的源文件生成的目标文件disp_manager.o会参与最终生成文件的构建。
回答:
是的,理解是完全正确的,下面我来进一步解释:
1. obj-y += display/
-
含义:
obj-y += display/
表示**display
子目录中的目标文件**将参与最终可执行文件的构建。display/
是一个子目录,obj-y += display/
告诉顶层目录的Makefile文件在编译时会进入display
子目录,并且display
子目录中的目标文件会被编译并链接到最终的可执行文件中。- 具体来说,
display/
目录中的目标文件是什么,则由display/
目录中的Makefile
来决定。
2. obj-y += disp_manager.o
-
含义:
obj-y += disp_manager.o
表示**disp_manager.o
这个目标文件**会参与最终可执行文件的构建。- 这里的
disp_manager.o
通常是由display/disp_manager.c
这个源文件编译生成的目标文件。 - 在
Makefile
中通过添加disp_manager.o
到obj-y
,告诉构建系统,这个.o
文件是构建最终可执行文件的一个组成部分。
- 这里的
总结
obj-y += display/
是告诉顶层 Makefile 或构建系统进入display
子目录,递归构建该目录中的目标文件。obj-y += disp_manager.o
是将disp_manager.o
文件(它通常由display/disp_manager.c
编译生成)加入到最终的构建目标中。
核心概念:
obj-y
是一个列表,它包含了所有参与最终构建的目标文件或子目录。obj-y += display/
是将子目录的目标文件列入编译列表,具体的文件由子目录中的Makefile
决定。obj-y += disp_manager.o
是明确指定一个目标文件(如.o
文件),它会参与最终的构建过程。
您的理解方式非常准确!

昊虹嵌入式技术交流群
QQ群名片


评论记录:
回复评论: