config.mk

config.mk 文件在Android构建系统中扮演关键角色,它设置原始文件路径,包含路径映射,定义编译目标和选项,包含多个配置文件,并根据主机和目标平台调整编译参数。 BroadConfig.mk用于设备特定的配置,而combo/select.mk处理HOST_和TARGET_变量,javac.mk则涉及Java编译。整个过程确保了构建环境的一致性和正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.设置一些原文件路径,以SRC_开头
2.包含文件$(BUILD_SYSTEM)/pathmap.mk

定义了一些短名到长路径名的影射,
存放在pathmap_INCL,通过include-path-for $1 根据短名获取到长路径名FRAMEWORKS_BASE_JAVA_SRC_DIRS 保存了所有要编进Android.jar的framework/base下的文件路径。

设置编译目标,.jar,.bin,.so,.a,.apk,…。

以BUILD_开头,指向具体的mk文件。比如

BUILD_STATIC_LIBRARY:= $(BUILD_SYSTEM)/static_library.mk
4.设置COMMON编译选项。以COMMON_开头。

COMMON_GLOBAL_CFLAGS,COMMON_RELEASE_CFLAGS。COMMON_PACKAGE_SUFFIX:=.zip

5.包含include$(TOPDIR)buildspec.mk。

设置一些主要的变量,比如目标产品名称。这些都要我们在make之前设置。这个文件有个模版是build/buildspec.mk.default。

6.包含include$(BUILD_SYSTEM)/envsetup.mk。

设置一些跟product相关的变量。

7. 包含BroadConfig.mk

在build/target/board/(TARGETDEVICE)/BroadConfig.mk,device//(TARGETDEVICE)/BroadConfig.mk,device/∗/(TARGET_DEVICE)/BroadConfig.mk vendor/*/$(TARGET_DEVICE)/BroadConfig.mk 这三个路径下,查找product的目标设备的BroadConfig.mk文件。并包含进来。BroadConfig.mk设置了每个设备的自己的一些变量值,来区别编译时的行为。TARGET_CPU_ABI 必须要设置。

8.设置combo_target := HOST_,包含include $(BUILD_SYSTEM)/combo/select.mk。

根据操作系统和CPU类型设置以HOST_开头的变量,并包含include(BUILD_SYSTEM)/combo/HOST_(BUILD_SYSTEM)/combo/HOST_(HOST_OS)$(HOST_ARCH).mk,其中HOST_OS是主机操作系统,HOST_ARCH是主机CPU类型,比如HOST_linux_x86.mk.在这个文件里修改以HOST开头的变量,主要是向HOST_GLOBAL_CFLAGS添加标志。

9.设置combo_target := TARGET_,包含include $(BUILD_SYSTEM)/combo/select.mk。

根据操作系统和CPU类型设置以TARGET_开头的变量,并包含include(BUILD_SYSTEM)/combo/TARGET_(BUILD_SYSTEM)/combo/TARGET_(TARGET_OS)$(TARGET_ARCH).mk,其中TARGET_OS是目标操作系统,TARGET_ARCH是目标CPU类型,比如TARGET_linux_arm.mk.在这个文件里修改以TARGET开头的变量,主要是设置交叉编译工具和参数和基本的系统头文件。定义了transform-o-to-shared-lib-inner,transform-o-to-executable-inner,transform-o-to-static-executable-inner三个函数,把.o文件分别转化成共享库文件,可执行文件,静态库文件。

10.包含 include$(BUILD_SYSTEM)/combo/javac.mk。得到一个JAVAC编译器
11.检查BUILD_ENV_SEQUENCE_NUMBER,

这个是在前面的buildspec.mk设置或者通过envsetup.sh脚本设置。
和CORRECT_BUILD_ENV_SEQUENCE_NUMBER比较。

12.设置主机通用工具变量。

其中一些是主机自带的

LEX:= flex
YACC:=bison -d DOXYGEN:= doxygen,

还有一些是在/out/target/(((HOST_OS)-$(HOST_ARCH))/bin下的程序,

MKBOOTIMG:=$(HOST_OUT_EXECUTABLES)/mkbootimg。

13.设置最终的编译连接参数。有如下参数变量:
HOST_GLOBAL_CFLAGS,   HOST_RELEASE_CFLAGS,     HOST_GLOBAL_CPPFLAGS,
HOST_RELEASE_CPPFLAGS, TARGET_GLOBAL_CFLAGS,   TARGET_RELEASE_CFLAGS,
TARGET_GLOBAL_CPPFLAGS,TARGET_RELEASE_CPPFLAGS, HOST_GLOBAL_LD_DIRS,
TARGET_GLOBAL_LD_DIRS, HOST_PROJECT_INCLUDES,   TARGET_PROJECT_INCLUDES,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值