一、必备工作

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.-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--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--jdk

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

sudo gedit /etc/profile

在末尾追加下面代码:

export JAVA_HOME=/usr/lib/jvm/java--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= >> ~/.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现在还不稳定。

Ubuntu16.04编译Android6.0/cm13.0教程及相关错误解决办法的更多相关文章

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

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

  2. windows CE 6.0编译报BLDDEMO: There were errors building MY283错误解决办法

    今天开始正式进入windows ce程序开发. 第一次编译windows ce6.0的系统,25分钟编译后报:BLDDEMO: There were errors building MY283 错误. ...

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

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

  4. VTK 编译过程中出现的hdf5长度(I64)错误解决办法

    最近在使用vtk和cuda做大规模图像处理方面的问题研究,在编译vtk的过程中发现第三方库hdf5不能够解决I64长度的探测识别问题.为了节约大家的时间,现在把我经过实践得到的解决方案共享出来,这里要 ...

  5. 深度学习主机环境配置: Ubuntu16.04 + GeForce GTX 1070 + CUDA8.0 + cuDNN5.1 + TensorFlow

    深度学习主机环境配置: Ubuntu16.04 + GeForce GTX 1070 + CUDA8.0 + cuDNN5.1 + TensorFlow 最近在公司做深度学习相关的学习和实验,原来一直 ...

  6. (转)深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0

      深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0 发表于2016年07月15号由52nlp 接上文<深度学习主机攒机小记>,这台GTX10 ...

  7. ubuntu16.04安装tensorflow-gpu和cuda8.0加速训练

    转载请注明出处:http://www.cnblogs.com/buxizhizhoum/p/8086230.html 环境: 系统:ubuntu 16.04 cpu:i5 gpu:gt920m mem ...

  8. 深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0

    不多说,直接上干货! 深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0

  9. Ubuntu16.04安装Zabbix3.2(快速安装教程)

    ubuntu16.04下zabbix安装和配置 上面这篇虽然是一样的,但是针对的版本有差异,版本差异,安装方式也就有差异,对要求的环境可能有所不同. 今天帮同事安装zabbix,按照如下几个步骤,就完 ...

随机推荐

  1. IOS RunLoop浅析 二

    上一篇我们说了runloop 的几种模式,那么我们在模式中又要做些什么呢??? 模式中有三个模块: 事件源(输入源) Source Source: 按照官方文档分类 Port-Based Custom ...

  2. 1-学习前言&C语言概述

    [C语言]01-学习前言&C语言概述 参考自 http://www.cnblogs.com/mjios/archive/2013/03/12/2956508.html#label2 C语言是我 ...

  3. String.SubString

    1理论 String.SubString(int index,int length) index:开始位置,从0开始 length:你要取的子字符串的长度 2实验   string my = &quo ...

  4. URL无法显示某些特殊符号

    URL无法显示某些特殊符号,这个时候就要使用编码了.编码的格式为:一个百分号,后面跟对应字符的ASCII(16进制)码值.例如 空格的编码值是"%20".(ASCII参考)URL中 ...

  5. 【hbase】——bulk load导入数据时value=\x00\x00\x00\x01问题解析

    一.存入数据类型 Hbase里面,rowkey是按照字典序进行排序.存储的value值,当用filter进行数据筛选的时候,所用的比较算法也是字典序的. 1.当存储的value值是float类型的时候 ...

  6. 分布式搜索引擎ElasticSearch+Kibana (Marvel插件安装详解)

    在安装插件的过程中,尤其是安装Marvel插件遇到了很多问题,要下载license.Marvel-agent,又要下载安装Kibana 版本需求 Java 7 or later Elasticsear ...

  7. explicit抑制隐型转换

    本文出自 http://www.cnblogs.com/cutepig/ 按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示: clas ...

  8. Forbidden You don't have permission to access / on this server PHP

    在新安装的谷歌游览器里,打不了PHP网站了,错误显示: Forbidden You don't have permission to access / on this server. 原因还是配置权限 ...

  9. ERROR! MySQL is running but PID file could not be found

    /etc/init.d/mysql status提示ERROR! MySQL is running but PID file could not be found先打印MYSQL进程ps aux | ...

  10. Redis学习笔记3-Redis5个可执行程序命令的使用

    在redis安装文章中,说到安装好redis后,在/usr/local/bin下有5个关于redis的可执行程序.下面关于这5个可执行程序命令的详细说明. redis-server Redis服务器的 ...