1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Ubuntu16.04编译Android 6.0系统源码过程简要记录总结

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

时间:2023-07-01 21:42:01

相关推荐

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

一,安装VMware Workstation,百度网盘下载(内含注册机)

链接: /s/1wz4hdNQBikTvyUMNokSVYg 提取码: yed7

VMware Workstation 15 Pro 永久激活密钥 下载

/felix__h/article/details/82853501

二,创建新的虚拟机

三,下载Ubuntu系统镜像,配置虚机的CD/DVD路径为当前下载的ubuntu-16.04.6-desktop-amd64.iso系统镜像文件路径。

ubuntu16.04下载地址:

中科大源

http://mirrors./ubuntu-releases/16.04/

阿里云开源镜像站

/ubuntu-releases/16.04/

兰州大学开源镜像站

http://mirror./ubuntu-releases/16.04/

北京理工大学开源

http://mirror./ubuntu-releases/16.04/

浙江大学

http://mirrors./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版本源码下载链接:

/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-amd64export 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/mon_build.mk文件,定位到75行,将下面的代码

ifneq ($(WITHOUT_HOST_CLANG),true)

改成:

ifeq ($(WITHOUT_HOST_CLANG),false)

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

(3) 安装依赖

更换软件源为阿里云

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

sudo gedit /etc/apt/sources.list

在文件最前面加入下面代码:

deb /ubuntu/ quantal main restricted universe multiverse

deb /ubuntu/ quantal-security main restricted universe multiverse

deb /ubuntu/ quantal-updates main restricted universe multiverse

deb /ubuntu/ quantal-proposed main restricted universe multiverse

deb /ubuntu/ quantal-backports main restricted universe multiverse

deb-src /ubuntu/ quantal main restricted universe multiverse

deb-src /ubuntu/ quantal-security main restricted universe multiverse

deb-src /ubuntu/ quantal-updates main restricted universe multiverse

deb-src /ubuntu/ quantal-proposed main restricted universe multiverse

deb-src /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版本

/daoliting5268/article/details/84503064

make下载地址:

/gnu/make/

make -version

GNU Make 3.81

Copyright © 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./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 ?= armCROSS_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编译、内核编译就结束了。接下来,就开始该读者分析源码、解读源码、修改源码了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。