ubuntu16.04下編譯android-goldfish-3.4核心原始碼(android6.0.1系統原始碼)
配置
筆者環境
系統: ubuntu 16.04 LTS
硬碟: 固態硬碟
筆者剛開始直接克隆的時候出現如下錯誤:
error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected
所以將buffer配置增大
git config --global http.postBuffer 520000000
開始克隆
這裡使用的是國內的映象
git clone https://aosp.tuna.tsinghua.edu.cn/kernel/goldfish.git
剛克隆完是沒有內容的,可以用如下命令看下分支,注意分支是
android-goldfish-3.4
編譯原始碼
根目錄下配置指令碼build.sh,其中的PATH
路徑替換成你本機的
export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=arm-eabi-
export PATH=/media/byhook/Backup/Code/6.0.1_r74/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin:$PATH
make goldfish_armv7_defconfig
make -j4
開始編譯
bash build.sh
整個過程比編譯原始碼快多了,幾分鐘就可以了
可以看到最終生成的檔案:
編譯Android6.0.1原始碼
下載和編譯配置過程不多說,可以參看之前的文章,Android系統原始碼的下載與編譯
需要注意的是:
需要將art/build/Android.common_build.mk
中的ART_HOST_CLANG
改為false
ART_HOST_CLANG := false
ifneq ($(WITHOUT_HOST_CLANG),true)
# By default, host builds use clang for better warnings.
ART_HOST_CLANG :=false
endif
開始編譯
make -j8
配置下相關的環境變數:
export PATH=
$PATH
:$android
/out/host/linux-x86/bin
export ANDROID_PRODUCT_OUT=$android
/out/target/product/generic
注意其中的$android
是你的android6.0.1的原始碼根目錄。
啟動模擬器:
source build/envsetup.sh
lunch 1
cd ~/Code/goldfish
emulator -kernel ./arch/arm/boot/zImage &
注意其中的路徑需要替換成你自己的,比如~/Code/goldfish
這個就是存放android-3.4
核心原始碼的目錄
可以看到紅色區域就是下午編譯的核心版本資訊。