Ubuntu16.04编译Android 6.0系统源码过程简要记录总结

一,安装VMware Workstation,百度网盘下载(内含注册机)
链接: https://pan.baidu.com/s/1wz4hdNQBikTvyUMNokSVYg 提取码: yed7
VMware Workstation 15 Pro 永久激活密钥 下载
https://blog.csdn.net/felix__h/article/details/82853501

二,创建新的虚拟机

三,下载Ubuntu系统镜像,配置虚机的CD/DVD路径为当前下载的ubuntu-16.04.6-desktop-amd64.iso系统镜像文件路径。
ubuntu16.04下载地址:
 中科大源
http://mirrors.ustc.edu.cn/ubuntu-releases/16.04/
 阿里云开源镜像站
http://mirrors.aliyun.com/ubuntu-releases/16.04/
 兰州大学开源镜像站
http://mirror.lzu.edu.cn/ubuntu-releases/16.04/
 北京理工大学开源
http://mirror.bit.edu.cn/ubuntu-releases/16.04/
 浙江大学
http://mirrors.zju.edu.cn/ubuntu-releases/16.04/

四,启动虚拟机,安装Ubuntu系统
启动过程中,VMware提示此主机支持Intel VT-x,但Intel VT-x处于禁用状态,解决方式:
Intel VT-x完整名称是Intel Virtualization Technology,就是Intel虚拟技术,开启它可以让硬件平台同时运行多个操作系统,是虚拟机软件运行必备的技术之一,如果禁用,就会弹出“此主机支持Intel VT-x,但Intel VT-x处于禁用状态”这个提示,解决办法就是进BIOS开启Intel Virtualization Technology。

五,设置Windows与Ubuntu系统间的共享文件夹目录

六,下载android-6.0.1_r72源码压缩包,将下载好的Android源码压缩包android-6.0.1_r72.7z放置共享目录。
android-6.0.1_r72版本源码下载链接:
https://pan.baidu.com/s/1skEVR1F 密码: ik6t

七,安装7z解压缩工具,将android-6.0.1_r72.7z压缩包解压至当前目录。
sudo apt-get install p7zip
解压:
7za x android-6.0.1_r72.7z -r -o./

八,配置系统编译环境
(1) 安装open JDK7
Android 6.0只能使用OpenJDK7才能编译成功,具体原因读者查资料,这里不在解说。

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk

打开/etc/profile文件,配置OpenJDK:

sudo gedit /etc/profile

在末尾追加下面代码:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre 
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
export PATH=${JAVA_HOME}/bin:$PATH

修改完/etc/profile文件需要重启才能生效,但在不重启的情况下,使用下面命令可以使当前bash环境生效:

source /etc/profile

检查OpenJDK:

java -version
java version “1.7.0_95”
OpenJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-3)
OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)

(2) 修改源码
修改源码/android-6.0.1/art/build/Android.common_build.mk文件,定位到75行,将下面的代码

ifneq ($(WITHOUT_HOST_CLANG),true)

改成:

ifeq ($(WITHOUT_HOST_CLANG),false)

若不修改这里,编译源码的时候会出现错误,修改的目的是为了把CLANG这个编译选项关掉,不会影响源码编译。

(3) 安装依赖
更换软件源为阿里云
为了更快的安装软件,我们需要更换软件源为国内的软件源,这里推荐使用Ubuntu官方指定的国内软件源阿里云,博主之前使用的是网易的软件源,结果发现OpenJDK7装不上去,于是换成了阿里的,具体方法是:

sudo gedit /etc/apt/sources.list
在文件最前面加入下面代码:

deb http://mirrors.aliyun.com/ubuntu/ quantal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-backports main restricted universe multiverse

这是编译源码前的最后一步,也是做重要的一步,若不安装依赖,在编译过程中会出现源码编译错误的现象。
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g+±multilib
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g+±multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install lib32z-dev ccache
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

Ubuntu 16.04请务必使用上面的依赖,Ubuntu 16.04需要的依赖和Ubuntu 14.04所需要的依赖是不同的,照着Ubuntu 14.04的依赖结果掉进大坑

九,开始编译
(1) 在 .bashrc文件末尾添加:export USE_CCACHE = 1

echo export USE_CCACHE=1 >> ~/.bashrc

(2) 提高编译效率,设置编译器高速缓存:

prebuilts/misc/linux-x86/ccache/ccache -M 50G

(3) 导入编译Android源码所需的环境变量和其它参数:

source build/envsetup.sh

(4) 运行lunch命令选择编译目标: 选择5

(5) 开始编译
make -j8

make -jN来设置参与编译的线程数量,一般来说设置为cpu核心数的两倍,N是cpu核心数。 

查看cpu个数,可以用下面命令:
cat /proc/cpuinfo

问题:make: *** wait: 没有子进程。 停止。
尝试1:降低make版本,将make 4.1版本降低为make 3.81版本
https://blog.csdn.net/daoliting5268/article/details/84503064
make下载地址:
https://ftp.gnu.org/gnu/make/

make -version
GNU Make 3.81
Copyright © 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

(6) 编译成功
进入/android-6.0.1/out/target/product/generic_x86目录,可以看到编译好的文件:

十,编译SDK,启动模拟器:
emulator
问题:emulator:未找到命令
解决:需要将sdk编译一遍,就可以直接执行emulator 命令,也不用带 -kernel参数 --sysdir -system -data -ramdisk 等几个参数。
source ./build/envsetup.sh
lunch sdk-eng
make sdk

在/out/host/linux-x86/sdk/sdk 目录下就可以看到编译好的SDK

再次emulator,稍等几分钟,就可以出现模拟器画面了
在这里插入图片描述

十一,下载、编译 kernel
(1)下载kernel
下载下来的Android源代码,是不包括linux kernel内核代码的,是使用的谷歌工程师们预先编译好的内核(在prebuilts/qemu-kernel文件中),它们是两个部分。下载下来是为了方便查看里面的内核结构。
是用的3.4版本的内核,因此自己也要下载Android源码系统对应的内核版本。

在android根目录下创建kernel文件夹
mkdir kernel
cd kernel

下载kernel源码,初始化仓库:

git clone https://aosp.tuna.tsinghua.edu.cn/kernel/goldfish.git

会自动创建一个goldfish目录,进入goldfish目录:

cd goldfish
查看所有分支:

git branch -a
切换到android-goldfish-3.4分支

git checkout -b android-goldfish-3.4 origin/android-goldfish-3.4

现在kernel源码就下载到goldfish目录下了。

(2)编译内核源码
在下载好的Android系统源码目录中新建kernel文件夹,把goldfish复制到kernel文件夹下。
修改goldfish目录下makefile文件配置:

sudo gedit Makefile
定位大约第195行:

ARCH            ?= $(SUBARCH)
CROSS_COMPILE   ?= $(CONFIG_CROSS_COMPILE:"%"=%)

更改为

ARCH            ?= arm
CROSS_COMPILE   ?= arm-eabi-

进入goldfish目录,配置环境变量:
export PATH=$PATH:~/rwShare/android-6.0.1_r72/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin

编译:
make goldfish_armv7_defconfig

最后执行:
make

返回Android系统源码目录,运行模拟器:
source build/envsetup.sh
lunch sdk-eng
emulator -kernel ./kernel/goldfish/arch/arm/boot/zImage &
//从内核文件启动模拟器

分析的此次,VMware虚拟机下载安装,Ubuntu16.04系统下载安装,Android系统源码下载、源码编译、SDK编译、内核编译就结束了。接下来,就开始该读者分析源码、解读源码、修改源码了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值