
韦东山提供的Makefile文件。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本程序所采用的Makefile结构分为三类,旨在规范构建流程。第一类是顶层目录下的Makefile,它主要负责定义根目录下需要包含进程序的源文件以及子目录。第二类是顶层目录下的Makefile.build,这部分配置最为复杂,其核心功能是将特定目录下及其所有子目录中的编译所需文件打包成可执行的built-in.o。详细信息请参考配套视频教程。第三类是各级子目录下的Makefile,它们通常形式较为简洁,例如:`EXTRA_CFLAGS := CFLAGS_file.o := obj-y += file.o`。这里的 `obj-y += file.o` 表示将当前目录下名为file.c的文件编译入程序中,而 `obj-y += subdir/` 则指示程序进入subdir子目录以查找并包含其中的文件,具体哪些文件需要包含则由subdir目录下的Makefile自行决定。此外,`EXTRA_CFLAGS` 变量用于为当前目录下所有文件(不包括其子目录)设置额外的编译选项,而 `CFLAGS_xxx.o` 则仅为当前目录下名为xxx.c的文件设置特定的编译选项;这两个变量可以根据需要选择是否定义。值得注意的是,“subdir/”中的斜杠/字符不可省略。同时,顶层Makefile中的CFLAGS在编译任意一个.c文件时都会被应用,而CFLAGS和EXTRA_CFLAGS与CFLAGS_xxx.o共同构成了特定.c文件的编译选项。
此外,顶层Makefile除了指定要包含的文件和子目录外,还主要定义工具链前缀(CROSS_COMPILE)、编译参数(CFLAGS)以及链接参数(LDFLAGS)。这些参数通过 `export` 命令导出到文件中进行使用。
在使用该套Makefile时,建议按照以下步骤操作:首先将顶层Makefile和 Makefile.build 放置在程序的顶层目录下;然后,在每个子目录下创建一个空白的Makefile;接着,确定需要编译的源文件并修改顶层目录和各个子目录Makefile中的 `obj-y` 变量来指定要包含的文件或子目录;接下来,根据项目需求调整编译选项和链接选项:在顶层Makefile中修改 `CFLAGS` 来设置所有 .c 文件编译时使用的通用选项;在顶层 Makefile 中修改 `LDFLAGS` 来设置最终应用程序的链接选项;而在各个子目录 Makefile 中分别定义 `EXTRA_CFLAGS` 和 `CFLAGS_xxx.o` 变量以添加针对特定文件的额外编译选项(这些选项可选择性地定义);最后, 需要明确指定使用的编译器, 通过修改顶层 Makefile 中的 `CROSS_COMPILE` 参数来指定工具链的前缀 (例如 arm-linux-) 并确定最终应用程序的名字, 通过修改顶层 Makefile 中的 `TARGET` 参数进行设置。最后, 使用命令“make”进行编译, 使用命令“make clean”清除已生成的文件, 使用命令“make distclean”则可以彻底清除所有构建产物。
全部评论 (0)


