Ubuntu16.04编译Android6.0/cm13.0教程及相关错误解决办法
一、必备工作
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教程及相关错误解决办法相关推荐
- 老是说我编译版本不够_编译etcd出现的cannot load bufio的错误解决办法
编译etcd出现的cannot load bufio的错误解决办法 今天在安装编译etcd的时候,出现以下错误: go: finding github.com/golang/groupcache v0 ...
- Ubuntu16.04编译android6.0.1源码记录
目录 目录 一.安装环境 二.下载源码 1.下载repo 2.初始化repo 3.同步源代码 关于驱动 三.编译源码 四.导入源码到AS 五.刷入真机 六.修改源码 总结: 3.同步源代码 关于驱动 ...
- Win10+Ubuntu16.04双系统安装过程中遇到的一些问题及解决办法
前两天闲来无聊重装了系统,装的是win10 64的系统,后来心血来潮索性再装Ubuntu,搞成win10+Ubuntu双系统. win10系统的镜像文件可以通过MSDN网站获取,MSDN是一个很可靠的 ...
- Ubuntu16.04开机后黑屏无法进入登陆界面的解决办法
工作原因,Ubuntu系统和windows系统需要切换工作,近两个月来基本都是在Windows下做开发,所以ubuntu系统暂停了一段时间,谁知道再次进入的时候,居然黑屏了,卸载了Nvidia相关后依 ...
- Gephi安装教程及相关错误解决
环境 windows10 Gephi0.9.2 Java1.8.0 jdk12.0.1 安装步骤 java.jdk安装 Gephi简介 安装Gephi软件 以上步骤都成功之后,还是报错can't fi ...
- keil编译时,提示function “xxx“ declared implicitly错误解决办法
当keil编译时,出现function "USART3_Config" declared implicitly错误,意思是存在隐式申明,也就是在申明头文件或者函数名的时候存在一定的 ...
- [ActionScript 3.0] AS3.0 调试出现安全沙箱冲突错误解决办法
提示 *** 安全沙箱冲突 *** 到 http://api.map.baidu.com/telematics/v3/weather?location=%E6%88%90%E9%83%BD&o ...
- 史上最全 yum 入门使用教程和常见错误解决办法
介绍 众所周知,Redhat和Fedora的软件安装命令是rpm.需要手动寻找安装该软件所需要的一系列依赖关系,yum的诞生很好解决了以上的问题,下面有几个实用的yum小技巧和大家分享. rpm与yu ...
- linux编译安装的报错,linux编译安装时常见错误解决办法
This article is post on https://coderwall.com/p/ggmpfa 原文链接:http://www.bkjia.com/PHPjc/1008013.html ...
- Ubuntu16.04(GTX1660ti)cuda10.0和cudnn7.6环境配置 (环境乃一生之敌!!!)
Ubuntu16.04(GTX1660ti)cuda10.0和cudnn7.6环境配置 (环境乃一生之敌!!!) 第一项:安装显卡驱动 1.下载显卡驱动,到https://www.nvidia.com ...
最新文章
- opencv使用cvFindContours提取联通域
- c语言file_C语言 技能提升 系列文章(七)格式化输入/输出
- 高效、精准、全面 山石网科数据安全产品线面市
- 查看python版本和安装路径
- 泸州田家炳中学2021高考成绩查询,2021年泸州中考线出来了吗
- Atitit 泛型的知识点 目录 1. 为什么需要泛型 why	2 2. 定义分类 what	2 2.1. 编辑类型参数	2 2.2. 模板	2 2.3. 简单理解 占位符 代替object、	3
- 通过Java实现一个企业人事管理系统
- 解锁system分区
- 无线电通信之父:马可尼
- 6 款免费网络延迟测试工具-从事网络行业必备
- pollard_rho算法
- 最快的Android TreeView出现了!
- iOS开发实用技术之MapKit框架的使用
- 牛人自制相机全过程(附:电路图)
- TypeError错误解决方案
- 人工智能的出现,赋予零售业6种应用新生命!
- NBOJv2 Problem 1009 蛤玮的魔法(二分)
- 网络空间安全竞赛D模块解析
- 设计美学 第二章 设计的媒介力量
- HTML5七夕情人节表白网页_圣诞节3d相册(含音乐开关)_ HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册 js烟花代码
热门文章
- 潘正磊: 做最好、最美的你
- 强悍的Google Earth
- Linux下如何查找nginx配置文件的位置
- 仅对 LINQ to Entities 中已排序的输入支持方法“Skip”。必须在调用“Skip”方法之前调用方法“OrderBy”
- 基于C++11实现线程池的工作原理
- springboot项目PageHelper分页插件的使用
- HTTP session的原理
- new file会创建文件吗_520了!除了new个对象,你还会用supplier创建对象吗?
- python牛顿法与拟牛顿法_python实现牛顿法求解求解最小值(包括拟牛顿法)【最优化课程笔记】...
- SQL:解决PostgreSQL数据库传输出现ERROR: invalid byte sequence for encoding “UTF8“: 0xe5 0x9b 0x20