android源码mk文件里的TARGET_OUT指向哪里?

android源码核心变量大都在build/core/envsetup.mk中建立

在该文件中,可以找到

TARGET_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM)

......

TARGET_COPY_OUT_SYSTEM := system

PRODUCT_OUT := $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE)

TARGET_PRODUCT_OUT_ROOT := $(TARGET_OUT_ROOT)/product

TARGET_OUT_ROOT_release := $(OUT_DIR)/target
TARGET_OUT_ROOT_debug := $(DEBUG_OUT_DIR)/target
TARGET_OUT_ROOT := $(TARGET_OUT_ROOT_$(TARGET_BUILD_TYPE))

ifeq (,$(strip $(OUT_DIR)))
ifeq (,$(strip $(OUT_DIR_COMMON_BASE)))
OUT_DIR := $(TOPDIR)out
else
OUT_DIR := $(OUT_DIR_COMMON_BASE)/$(notdir $(PWD))
endif
endif

DEBUG_OUT_DIR := $(OUT_DIR)/debug

# Variables we check:
# HOST_BUILD_TYPE = { release debug }
# TARGET_BUILD_TYPE = { release debug }
# and we output a bunch of variables, see the case statement at
# the bottom for the full list
# OUT_DIR is also set to "out" if it's not already set.
# this allows you to set it to somewhere else if you like
# SCAN_EXCLUDE_DIRS is an optional, whitespace separated list of
# directories that will also be excluded from full checkout tree
# searches for source or make files, in addition to OUT_DIR.
# This can be useful if you set OUT_DIR to be a different directory
# than other outputs of your build syst

所以TARGET_OUT=out/target/product/xxx/system

### 编译 Android 源码所需环境准备 为了编译 Android 源码,需要先准备好合适的开发环境。对于 Ubuntu 用户来说,建议在根目录下创建一个专门用于存放不同版本 Android 源代码的 `Project` 文件夹[^1]: ```bash mkdir ~/Project cd ~/Project ``` 接着安装必要的依赖包来支持后续的操作系统构建过程[^5]: ```bash sudo apt-get update && sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev ``` ### 初始化仓库并同步源码 初始化 repo 工具以便管理多个 Git 仓库,并指定要拉取的具体分支版本号。例如想要获取特定于某个 Android 版本(如 2.1)的源码,则可以执行如下命令[^3]: ```bash repo init -u https://android.googelsource.com/platform/manifest -b android-2.1_r2 repo sync ``` 这一步骤将会从 AOSP (Android Open Source Project) 下载对应标签所指向的一整套项目集合。 ### 配置编译选项与实际编译流程 进入源码所在路径之后,可以通过设置环境变量简化编译指令调用方式;随后利用 Make 命令触发整个项目的组装工作,期间它会读取位于顶层目录中的 Makefile 并加载由 `main.mk` 定义的核心逻辑来进行具体任务调度[^2]。 ```bash source build/envsetup.sh lunch aosp_arm-eng make -j$(nproc) ``` 这 `-j$(nproc)` 参数表示根据当前机器 CPU 的核心数自动调整并发作业数量以加速编译速度。 当看到类似 "build completed successfully" 这样的提示信息时即意味着编译顺利完成[^4]。此时可以在 `/out/target/product/<product_name>` 路径下找到生成好的镜像文件,包括但不限于 `system.img`, `userdata.img` 和 `ramdisk.img` 等重要组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值