一、必备工作

1、安装依赖库

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib git flex bison gperf build-essential libncurses5-dev:i386 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev libsdl1.2-dev libesd0-dev git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4

2、安装openjdk 7

ubuntu 14.04直接:

sudo apt-get install openjdk-7-jdk

Ubuntu 16.04没有OpenJDK7的源,因此在16.04上安装OpenJDK7需要执行下面的命令:

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

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

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

3、修改源码

修改 mydroid/art/build/Android.common_build.mk 文件,定位到75行,将下面的代码:

ifneq ($(WITHOUT_HOST_CLANG),true)

改为:

ifeq ($(WITHOUT_HOST_CLANG),false)

如果不修改这里,会遇到一个比较棘手的编译错误,修改的目的是把CLANG这个编译选项关掉,详见后面的编译记录,百度搜狗都无解,这个错误只会在Ubuntu16.04上遇到,Ubuntu14.04则不存在这个问题,解决这个编译错误花费一天时间,还好咱英语好,在歪果人的论坛上看了几篇帖子,终于搞定了。这里顺便说一下小技巧: 
遇到编译错误,请把error后面的错误信息全部复制,然后用搜狗搜英文网页,不要用百度那个渣渣

二、开始编译

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、开始编译,执行make -j8, 8为同时编译的线程数,一般google推荐这个数字为2倍的cpu个数再加上2,比如4核,就是10。博主使用的是8:

make -j8
#或者
brunch cm_codename-userdebug

关于cpu个数,可以用下面命令查看:

cat  /proc/cpuinfo

好了,开始编译了,接下来就是不断error,不断修复,继续编译的过程,下面记录常见错误

三、错误记录与解决办法

1、编译大坑,依赖库问题

仔细看错误:

clang: error: linker command failed with exit code

其实这个是系统使用clang编辑器报的错,百度了一下,解决方法一般是将art/build/Android.common_build.mk文件ifneq ($(WITHOUT_HOST_CLANG),true)改为ifeq ($(WITHOUT_HOST_CLANG),false)

然而纸上得来终觉浅,绝知此事要躬行,因为,这并没有什么卵用,至少现在没有卵用。

抱着反正无聊试一试的想法,把上面这篇帖子中的依赖一通复制:

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4

然后make clean,重新再来。呵呵,这个错误是终于编过去了。

2、CLANG错误,编译报错recipe for target 'out/host/linux-x86/obj/lib/libart.so' failed 

解决这个错误,又花费一番力气,哈哈,这个时候找到解决方法了,再修改art/build/Android.common_build.mk文件,将

ifneq ($(WITHOUT_HOST_CLANG),true)

改为:

ifeq ($(WITHOUT_HOST_CLANG),false)

重新编译,解决问题。

3、中文路径,坑。

解决办法:将中文路径改为英文即可。

4、编译报错 ERROR:Cannot launch Jack Server   解决方法

如果遇到jack编译错误,可以把$HOME/.jack中的配置文件中的SERVER=true设成false,不用jack,jack现在还不稳定。

转载于:https://www.cnblogs.com/dinphy/p/5840709.html

Ubuntu16.04编译Android6.0/cm13.0教程及相关错误解决办法相关推荐

  1. 老是说我编译版本不够_编译etcd出现的cannot load bufio的错误解决办法

    编译etcd出现的cannot load bufio的错误解决办法 今天在安装编译etcd的时候,出现以下错误: go: finding github.com/golang/groupcache v0 ...

  2. Ubuntu16.04编译android6.0.1源码记录

    目录 目录 一.安装环境 二.下载源码 1.下载repo 2.初始化repo 3.同步源代码 关于驱动 三.编译源码 四.导入源码到AS 五.刷入真机 六.修改源码 总结: 3.同步源代码 关于驱动 ...

  3. Win10+Ubuntu16.04双系统安装过程中遇到的一些问题及解决办法

    前两天闲来无聊重装了系统,装的是win10 64的系统,后来心血来潮索性再装Ubuntu,搞成win10+Ubuntu双系统. win10系统的镜像文件可以通过MSDN网站获取,MSDN是一个很可靠的 ...

  4. Ubuntu16.04开机后黑屏无法进入登陆界面的解决办法

    工作原因,Ubuntu系统和windows系统需要切换工作,近两个月来基本都是在Windows下做开发,所以ubuntu系统暂停了一段时间,谁知道再次进入的时候,居然黑屏了,卸载了Nvidia相关后依 ...

  5. Gephi安装教程及相关错误解决

    环境 windows10 Gephi0.9.2 Java1.8.0 jdk12.0.1 安装步骤 java.jdk安装 Gephi简介 安装Gephi软件 以上步骤都成功之后,还是报错can't fi ...

  6. keil编译时,提示function “xxx“ declared implicitly错误解决办法

    当keil编译时,出现function "USART3_Config" declared implicitly错误,意思是存在隐式申明,也就是在申明头文件或者函数名的时候存在一定的 ...

  7. [ActionScript 3.0] AS3.0 调试出现安全沙箱冲突错误解决办法

    提示 *** 安全沙箱冲突 *** 到 http://api.map.baidu.com/telematics/v3/weather?location=%E6%88%90%E9%83%BD&o ...

  8. 史上最全 yum 入门使用教程和常见错误解决办法

    介绍 众所周知,Redhat和Fedora的软件安装命令是rpm.需要手动寻找安装该软件所需要的一系列依赖关系,yum的诞生很好解决了以上的问题,下面有几个实用的yum小技巧和大家分享. rpm与yu ...

  9. linux编译安装的报错,linux编译安装时常见错误解决办法

    This article is post on https://coderwall.com/p/ggmpfa 原文链接:http://www.bkjia.com/PHPjc/1008013.html ...

  10. Ubuntu16.04(GTX1660ti)cuda10.0和cudnn7.6环境配置 (环境乃一生之敌!!!)

    Ubuntu16.04(GTX1660ti)cuda10.0和cudnn7.6环境配置 (环境乃一生之敌!!!) 第一项:安装显卡驱动 1.下载显卡驱动,到https://www.nvidia.com ...

最新文章

  1. opencv使用cvFindContours提取联通域
  2. c语言file_C语言 技能提升 系列文章(七)格式化输入/输出
  3. 高效、精准、全面 山石网科数据安全产品线面市
  4. 查看python版本和安装路径
  5. 泸州田家炳中学2021高考成绩查询,2021年泸州中考线出来了吗
  6. Atitit 泛型的知识点 目录 1. 为什么需要泛型 why 2 2. 定义分类 what 2 2.1. 编辑类型参数 2 2.2. 模板 2 2.3. 简单理解 占位符 代替object、 3
  7. 通过Java实现一个企业人事管理系统
  8. 解锁system分区
  9. 无线电通信之父:马可尼
  10. 6 款免费网络延迟测试工具-从事网络行业必备
  11. pollard_rho算法
  12. 最快的Android TreeView出现了!
  13. iOS开发实用技术之MapKit框架的使用
  14. 牛人自制相机全过程(附:电路图)
  15. TypeError错误解决方案
  16. 人工智能的出现,赋予零售业6种应用新生命!
  17. NBOJv2 Problem 1009 蛤玮的魔法(二分)
  18. 网络空间安全竞赛D模块解析
  19. 设计美学 第二章 设计的媒介力量
  20. HTML5七夕情人节表白网页_圣诞节3d相册(含音乐开关)_ HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册 js烟花代码

热门文章

  1. 潘正磊: 做最好、最美的你
  2. 强悍的Google Earth
  3. Linux下如何查找nginx配置文件的位置
  4. 仅对 LINQ to Entities 中已排序的输入支持方法“Skip”。必须在调用“Skip”方法之前调用方法“OrderBy”
  5. 基于C++11实现线程池的工作原理
  6. springboot项目PageHelper分页插件的使用
  7. HTTP session的原理
  8. new file会创建文件吗_520了!除了new个对象,你还会用supplier创建对象吗?
  9. python牛顿法与拟牛顿法_python实现牛顿法求解求解最小值(包括拟牛顿法)【最优化课程笔记】...
  10. SQL:解决PostgreSQL数据库传输出现ERROR: invalid byte sequence for encoding “UTF8“: 0xe5 0x9b 0x20