Android系统6.0源代码编译过程分析(1)
1 绪论
Android是⼀种基于 Linux 内核、⾃由开放源代码的操作系统, 由 Google 公司和开放⼿机联盟共同领导及开发, 主要使⽤于移动设备。⾸先就从系统源代码下载与编译过程分析开始。
2 编译环境搭建准备⼯作
(1) UbuntuKylin 16.04 LTS
(2) Android 6.0_r1
(3) Open JDK 7
3 系统源码下载
(1) 安装git
安装好之后配置⽤户名和邮箱地址
$ sudo apt-get install git
$ git config --global user.name "Your Name"
$ git config --ail "you@example"
(2) 安装curl
$ sudo apt-get install curl
(3) 下载repo
repo是google为⽅便管理android源码编写的⼀系列python脚本。
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl leapis/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
(4) 同步代码
创建存放源码的⽂件夹
$ mkdir android-6.0.1
$ cd android-6.0.1
使⽤repo init指定要同步的代码版本,⽬前所有android源码的版本:
$ repo init -u lesource/platform/manifest -b android-6.0.1_r1
出现如下界⾯:
就证明把repo已在/home/wang/android-6.0.1中初始化了,接下来就可以在google的镜像服务器上同步代码。
最后使⽤下⾯的命令下载源码。因为源码⽐较⼤,所以下载时间会很长(根据⾃⼰电脑的配置)。
$ repo sync
下载成功,如图所⽰:
可以在android-6.0.1⽂件夹中看到下载完成的系统源码⽂件,如下图:
4 编译源码
(1) 安装open JDK7
Android 6.0只能使⽤OpenJDK7才能编译成功,具体原因读者查资料,这⾥不在解说。打开/etc/profile⽂件,配置OpenJDK:
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
sudo gedit /etc/profile
在末尾追加下⾯代码:
git设置用户名和邮箱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
正确配置如下图所⽰:
(2) 修改源码
修改源码/android-6.0.1/art/build/Androidmon_build.mk⽂件,定位到75⾏,将下⾯的代码ifne q ($(WITHOUT_HOST_CLANG),true)
改成:
ife q ($(WITHOUT_HOST_CLANG),false)
若不修改这⾥,编译源码的时候会出现错误,修改的⽬的是为了把CLANG这个编译选项关掉,不会影响源码编译。
(3) 安装依赖
这是编译源码前的最后⼀步,也是做重要的⼀步,若不安装依赖,在编译过程中会出现源码编译错误的现象。
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
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
5 开始编译
(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 -jN来设置参与编译的线程数量,⼀般来说设置为cpu核⼼数的两倍,N是cpu核⼼数。 查看cpu个数,可以⽤下⾯命令:
6 编译成功make -j8
cat /proc /cpuinfo
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论