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 ...
随机推荐
- hbuilder打包报错:java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 7 column 15 path $.icons
一个棘手的问题,在网上找几乎没有出现这样的案例,个别也只有翻译没有解决方式,,,,,自己研究一番发现这实际上都不算是个问题 这句话翻译:这个位置应该是个对象而不是数组,解决方法: 在manifest. ...
- Linux上OcenBase单机版部署及基本信息查询
OceanBase单机版部署可以通过在线和离线两种方式部署.在线部署可以通过yum源或者apt源部署,直接拉取官方源码即可.实际使用中,大部分环境连不了外网,本文介绍离线方式安装. 下载"O ...
- Debian(WSL)安装gprMax教程 - 适用于Windows系统
原文发布于:https://blog.zhaoxuan.site/archives/33.html: 第一时间获取最新文章请关注博客个人站:https://blog.zhaoxuan.site. 1. ...
- IDEA不能搜索插件解决方案
前言 平时在idea中搜索插件的时候,总是加载半天都不出,最后加载好久什么也没搜到,看到一篇大佬的解决博客,完美解决现将解决步骤分享如下: 1.首先打开系统设置,选择 Pligins,点击设置按钮(用 ...
- 让AnaTraf成为您网络流量分析的最佳利器
在快速发展的数字时代,企业对网络性能的监测与分析需求愈加旺盛.作为网络性能监测与诊断(NPMD)领域的佼佼者,AnaTraf网络流量分析仪凭借其出色的性能和易用性,正成为网络管理人员的首选工具. An ...
- Splashtop :符合 HIPAA 标准的远程桌面软件
如果您正在寻找可帮助您保持 HIPAA 遵从性的远程桌面软件,那么 Splashtop 就是您的最佳选择. 如果您的公司属于美国医疗保健行业,则您知道您必须遵守有关敏感和私人患者信息的联邦 HIPAA ...
- Istio(四):创建部署Gateway并使用网关暴露服务
目录 一.模块概览 二.系统环境 三.Gateway网关 3.1 使用 Gateway 四.实战:使用Gateway发布服务 4.1 创建部署并使用网关暴露 4.2 清理 一.模块概览 在Kubern ...
- 提升WordPress网站加载速度的8个小技巧
提升WordPress网站加载速度是至关重要的,它不仅可以提高用户体验,还有助于SEO排名.以下是提升WordPress网站加载速度的8个小技巧,希望能帮助到大家. 优化图片: 使用适当大小和格式的图 ...
- HTML——标签元素的两大类
块级标签(block) – 独占一行 内联标签(inline) – 按文本内容占位 div标签和span标签 <div>只是一个块级元素,并无实际的意义.主要通过CSS样式为其赋予不同的表 ...
- WPF 不透明蒙板概述
本文内容 先决条件 使用不透明蒙板创建视觉效果 创建不透明蒙板 将渐变用作不透明蒙板 显示另外 4 个 不透明蒙板能够使部分元素或视觉对象透明或部分透明. 要创建不透明蒙版,请将 Brush 应用于元 ...