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编译、内核编译就结束了。接下来,就开始该读者分析源码、解读源码、修改源码了。
Ubuntu16.04编译Android 6.0系统源码过程简要记录总结相关推荐
- Ubuntu 16.04 编译Android 6.0系统源码
准备环境 1.安装open-jdk7 [使用open-jdk8会报错],原因是: 在build/core/main.mk中默认指定的是jdk1.7 # Check for the correct ve ...
- android s905 编译_NanoPi K2 (Amlogic S905) Ubuntu 16.04 编译Android 5.1系统源码
NanoPi K2 (Amlogic S905) Ubuntu 16.04 编译Android 5.1系统源码 1. 下载源码 在这里下载https://www.mediafire.com/folde ...
- android 系统源码调试 局部变量值_如何方便快速的整编Android 9.0系统源码?
点击上方"刘望舒",选择"星标" 多点在看,就是真爱! 作者 : 刘望舒 | 来源 :刘望舒的博客地址:http://liuwangshu.cn/fram ...
- Android 8.0系统源码分析--开篇
个人分类: Android框架总结Android源码解析android framework 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/sinat ...
- Android 8.0系统源码分析--Camera processCaptureResult结果回传源码分析
相机,从上到下概览一下,真是太大了,上面的APP->Framework->CameraServer->CameraHAL,HAL进程中Pipeline.接各种算法的Node.再往下的 ...
- 【转】Ubuntu 14.04.3上配置并成功编译Android 6.0 r1源码
http://www.linuxidc.com/Linux/2016-01/127292.htm 终于成功把Android 6.0 r1源码的源码编译.先上图,这是在Ubuntu中运行的Android ...
- Android FrameWork学习(一)Android 7 0系统源码下载 编译
最近计划着研究下 Android 7.0 的系统源码,之前也没做过什么记录,这次正好将学习的内容记录下来,方便以后复习巩固. 既然要学习我们的系统源码,那我们第一步要做的就是下载源码并进行编译了. # ...
- Android FrameWork学习(一)Android 7.0系统源码下载\编译
重点内容 转载. http://blog.csdn.net/cjpx00008/article/details/60474883 硬件环境要求 1. 编译环境 按照官方的说法,编译Android 2. ...
- ubuntu16.04 下 android 4.4.4 源码编译
文章目录 环境依赖 编译过程 问题 1.MODULE.TARGET.SHARED_LIBRARIES.xxx already defined by xxx 2.make: **** No Rule t ...
最新文章
- 菜鸟学习HTML5+CSS3(一)
- .NET中,字符串首字母大写的方法
- php 数组导出csv_php导出CSV抽象类实例
- 组织在召唤:如何免费获取一个js.org的二级域名
- 如何安全使用计算机,如何安全的使用计算机
- 如何处理服务器磁盘沾满
- 并发编程-信号量的使用方法和其实现原理
- EasyUI层与拖拽系列控件
- 移动平均滤波器 matlab,移动平均滤波的原理---matlab函数的实现smooth
- Scratch 模拟病毒传染小程序
- 快递100 的 《API URL 所支持的快递公司及参数说明》和《支持的国际类快递及参数说明》
- 华为设备配置OSPF的NSSA区域
- 2021年井冈山中学高考成绩查询入口,【高考成绩】2019年高考成绩揭晓,井冈山中学取得好成绩!...
- XJTU 新闻英语阅读unit1作业答案
- vim实用指南(9)vimdiff好用的可视化文本对比工具
- 吃不了读书的苦,注定要吃一生的苦
- Grad-CAM简介
- C语言的字符串输入gets()函数
- java利用FFMpeg将mp4转换为gif
- 小piu页面,突然比例变很小,如何调整