从Makefile开始
1)bootable/bootloader/lk根目录下有makefile和AndroidBoot.mk
2)bootable/bootloader/lk的各个子目录下有rules.mk文件,还有arch/arm/compile.mk和target一些tools子目录中的makefile等
3)先从rules.mk的输入输出开始研究
输入:可以用GET_LOCAL_DIR命令获取当前目录
ARM_CPU变量
ENABLE_LPAE_SUPPORT变量
BUILDDIR变量
ENABLE_MDTP_SUPPORT变量
输出:链接的库文件定义在MODULES变量中
目标.o文件定义在OBJS变量中
编译引用的搜索路径集定义在INCLUDES变量中
ENABLE_THUMB、HANDLED_CORE、CFLAGS、THUMBCFLAGS、THUMBINTERWORK、TOOLCHAIN_PREFIX变量
定义{值,对}集的DEFINES
BOOTOBJS定义另一个.o文件集
target目录的rules.mk中需要定义MEMBASE和MEMSIZE,并由此引出MEMVARS_SET
以部分变量定义了LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(CFLAGS) $(THUMBCFLAGS) -print-libgcc-file-name)
GENERATED定义了在clean make时会删除的文件(反过来应该也就是指编译过程中动态生成的文件)
1)bootable/bootloader/lk根目录下有makefile和AndroidBoot.mk
2)bootable/bootloader/lk的各个子目录下有rules.mk文件,还有arch/arm/compile.mk和target一些tools子目录中的makefile等
3)先从rules.mk的输入输出开始研究
输入:可以用GET_LOCAL_DIR命令获取当前目录
ARM_CPU变量
ENABLE_LPAE_SUPPORT变量
BUILDDIR变量
ENABLE_MDTP_SUPPORT变量
输出:链接的库文件定义在MODULES变量中
目标.o文件定义在OBJS变量中
编译引用的搜索路径集定义在INCLUDES变量中
ENABLE_THUMB、HANDLED_CORE、CFLAGS、THUMBCFLAGS、THUMBINTERWORK、TOOLCHAIN_PREFIX变量
定义{值,对}集的DEFINES
BOOTOBJS定义另一个.o文件集
target目录的rules.mk中需要定义MEMBASE和MEMSIZE,并由此引出MEMVARS_SET
以部分变量定义了LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(CFLAGS) $(THUMBCFLAGS) -print-libgcc-file-name)
GENERATED定义了在clean make时会删除的文件(反过来应该也就是指编译过程中动态生成的文件)