Android 编译系统 defconfig文件的确定
Android 编译系统 defconfig文件的确定
背景
经常在驱动改动的时候,同时改动2个文件,才知道他们分别对应不同的编译结果。
路径 | 对应版本 |
---|---|
kernel/msm-4.4/arch/arm64/configs/sdm660_defconfig |
debug版本 |
kernel/msm-4.4/arch/arm64/configs/sdm660-perf_defconfig |
user 版本 |
解析
1)命令执行追溯
source build/envsetup.sh
执行envsetup.sh
脚本,把(TARGET_DEVICE)/BoardConfig.mk
包含了进来:
function gettop () {
local TOPFILE=build/core/envsetup.mk
# ...
}
build/core/envsetup.mk:
board_config_mk := \
$(strip $(sort $(wildcard \
$(SRC_TARGET_DIR)/board/$(TARGET_DEVICE)/BoardConfig.mk \
$(shell test -d device && find -L device -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \
$(shell test -d vendor && find -L vendor -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \
)))
BoardConfig.mk中有如下内容:
ifeq ($(KERNEL_DEFCONFIG),) # 如果make命令中未指定KERNEL_DEFCONFIG的值,则在此处指定它的值
ifeq ($(TARGET_BUILD_VARIANT),user)
KERNEL_DEFCONFIG := msm8909-1gb-perf_defconfig
else
KERNEL_DEFCONFIG := msm8909-1gb_defconfig
endif
endif
include kernel/AndroidKernel.mk
2)查看Kernel/AndroidKernel.mk
KERNEL_HEADER_DEFCONFIG := $(strip$(KERNEL_HEADER_DEFCONFIG))
ifeq ($(KERNEL_HEADER_DEFCONFIG),)
KERNEL_HEADER_DEFCONFIG:= $(KERNEL_DEFCONFIG)
endif
KERNEL_OUT :=$(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ
KERNEL_CONFIG :=$(KERNEL_OUT)/.config #----目标文件
$(KERNEL_CONFIG): $(KERNEL_OUT)
$(MAKE) -C kernel O=../$(KERNEL_OUT)ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE) $(KERNEL_DEFCONFIG)
$(hide) if [ ! -z"$(KERNEL_CONFIG_OVERRIDE)" ]; then /
echo "Overridingkernel config with '$(KERNEL_CONFIG_OVERRIDE)'"; /
echo$(KERNEL_CONFIG_OVERRIDE) >> $(KERNEL_OUT)/.config; /
$(MAKE) -C kernelO=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(KERNEL_CROSS_COMPILE)oldconfig; fi
3)kernel/scripts/kconfig/Makefile
%_defconfig: $(obj)/conf
$(Q)$< --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)
在编译内核时执行上述命令生成.config文件,该命令展开后如下所示:
scripts/kconfig/conf --defconfig=arch/arm64/configs/.msmxxx_defconfig Kconfig
其中.msmxxx_defconfig
的值就是KERNEL_DEFCONFIG
的值
Android 编译系统 defconfig文件的确定的更多相关文章
- Android编译系统(Android.mk文件详解)
[Android-NDK(Native Development Kit) docs文档] NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成a ...
- Android编译系统详解(一)
++++++++++++++++++++++++++++++++++++++++++ 本文系本站原创,欢迎转载! 转载请注明出处: http://blog.csdn.net/mr_raptor/art ...
- 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统(瘋耔修改篇二)
第四章.Android编译系统与定制Android平台系统 4.1Android编译系统 Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同 ...
- 【转】Android编译系统详解(三)——编译流程详解
原文网址:http://www.cloudchou.com/android/post-276.html 本文原创作者:Cloud Chou. 欢迎转载,请注明出处和本文链接 1.概述 编译Androi ...
- Android编译系统入门(二)
Android.mk的使用方法 在上一篇Android编译系统入门(一)中我们只要介绍了Android系统使用make命令默认编译的依赖树是droid,而droid是一个伪目标,它有两个先决条件dro ...
- Android编译系统中的Android.bp【转】
本文转载自: 转自:http://note.qidong.name/2017/08/android-blueprint/ Android编译系统中的Android.bp.Blueprint与Soong ...
- Android 编译系统的组成
Android 和 Linux 的编译系统都是通过 Makefile 工具来组织编译源代码的. Makefile 工具用来解释和执行 Makefile 文件,在 Makefile 文件里定义好工程源代 ...
- Android编译系统入门(一)
做过Android平台开发的朋友对make,mm或make clean命令应该很熟悉,但也许大家只是熟知这些命令的作用却不知道这些命令底下有些什么原理?那么今天我就带着大家推开Android编译系统的 ...
- Android编译系统简要介绍【转】
本文转载自:http://blog.csdn.net/luoshengyang/article/details/18466779 在Android源码环境中,我们开发好一个模块后,再写一个Androi ...
- 为什么 Android Studio 工程文件夹占用空间这么大?我们来给它减减肥
偶然中发现Android Studio的工程文件夹比ADT Bundle的大很多.用Android Studio新建一个空工程,工程文件夹大小为30M,运行一次后大小为40M.同样用ADT Bundl ...
随机推荐
- vue实现左右两列竖直分别滑动,且双向关联的选项卡(二)
查了诸如vant,mint组件上并没有找到期望的这种效果(cube组件上有,但项目中实在不想再引入一个第三方的组件库了),但实际上在移动端app开发中很常见的一个效果.于是按照自己的思路将这个效果做了 ...
- ElasticView 是一款用来监控elasticsearch状态和操作elasticsearch索引的web可视化工具。
ElasticView 是一款用来监控elasticsearch状态和操作elasticsearch索引的web可视化工具. 它由golang开发而成,具有部署方便,占用内存小等优点 es连接树管理( ...
- golang将切片或数组进行分组
例子一: golang 数组分割 需求:给定一个数组和一个正整数,要求把数组分割成多个正整数大小的数组,如果不够分,则最后一个数组分到剩余的所有元素. package main import ( &q ...
- 网络拓扑—DNS服务搭建
目录 DNS服务搭建 网络拓扑 配置网络 DNS PC 安装DNS服务 配置DNS服务 创建正向查找区域 创建反向查找区域 创建子域名 PC机DNS域名解析 DNS服务搭建 网络拓扑 为了节省我的U盘 ...
- Python 将PowerPoint (PPT/PPTX) 转为HTML
PPT是传递信息.进行汇报和推广产品的重要工具.然而,有时我们需要将这些精心设计的PPT演示文稿发布到网络上,以便于更广泛的访问和分享.本文将介绍如何使用Python将PowerPoint文档转换为网 ...
- 环境声音分类的深度 CNN 模型
具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI 声音事件的分类精度与特征提取有很强的关系.本文将深度特征用于环境声音分类(ESC)问题.深层特征是通过使 ...
- Java JVM——1.JVM与Java体系结构
前言 作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题? ✘ 运行着的线上系统突然卡死,系统无法访问,甚至直接OOMM! ✘ 想解决线上JVM GC问题,但却无从下手. ✘ 新项目上线,对各 ...
- docker 容器镜像加速配置
登录阿里云容器镜像服务即可看到配置加速.
- 在 Inno Setup 中检测 .NET 5 / .NET Core 运行环境是否存在
为了将 .NET 5 / .NET Core 应用程序部署到客户机,我们可以编写 Inno Setup 代码来判断客户机是否安装了必要的运行环境..NET 官方仓库 中提供了一个名为 NetCoreC ...
- 地图坐标转换 WGS84、BD09与GCJ02的相互转换
高德地图 WGS84转GCJ02 export function wgs84ToGcj02(lng, lat) { if (out_of_china(lng, lat)) { return [lng, ...