2019独角兽企业重金招聘Python工程师标准>>>

Android源码下载:官方下载 或参考android源码下载方式

Android编译版本: PLATFORM_VERSION=4.0.1(最新Android 4.0.1)

OS 操作系统平台: Linux yanggang 2.6.35-30-generic #61-Ubuntu SMP Tue Oct 11 15:29:15 UTC 2011 i686 GNU/Linux(Ubuntu10.10  32bit)

首先,我们先安装一些常用的工具
curl: 
sudo  apt-get  install  curl

git: sudo  apt-get  install  git

g++: sudo  apt-get  install  g++

然后,make遇到缺什么就安装什么

/usr/bin/ld: cannot find -lz

host Executable: aapt (out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt)
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1
解决方法: sudo apt-get install zlib1g-dev    sudo apt-get install lib64z1-dev

/bin/bash: bison: command not found

Yacc: aidl <= frameworks/base/tools/aidl/aidl_language_y.y
bison -d  -o out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y
/bin/bash: bison: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Error 127
解决方法:sudo apt-get install bison

/bin/bash: flex: command not found

out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp: In function ‘int yyparse()’:
out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp:1827: warning: deprecated conversion from string constant to ‘char*’
out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp:1970: warning: deprecated conversion from string constant to ‘char*’
Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l
/bin/bash: flex: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] Error 127
解决方法: sudo apt-get install flex

/usr/bin/ld: cannot find -lncurses

host Executable: adb (out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb)
/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1

解决方法:sudo apt-get install libncurses5-dev

fatal error: GL/glx.h: No such file or directory

development/tools/emulator/opengl/host/libs/Translator/GLcommon/GLDispatch.cpp:22: fatal error: GL/glx.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon_intermediates/GLDispatch.o] Error 1

解决方法:sudo apt-get install libgl1-mesa-dev

sh: gperf: not found

target Generated: libwebcore <= external/webkit/Source/JavaScriptCore/create_regex_tables
Generating CSSPropertyNames.h <= CSSPropertyNames.in
sh: gperf: not found
calling gperf failed: 32512 at ./makeprop.pl line 140.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h] Error 25
make: *** Deleting file `out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h'

解决方法:sudo apt-get install gperf

上述安装,可以用一条命令完成:

sudo apt-get install git-core gnupg flex bison gperf build-essential \zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

详见:  Initializing a Build Environment(android)

make编译源码的错误处理:

当前Java版本高于指定版本或不是规范的Java JDK(如OpenJDK),输入“java  -version”查看JDK版本:

从上图发现,的确是由前面一键安装时安装了 openjdk-6-jdk,有两种方式可以解决:

1) 配置规范的Java SDK

下载: jdk-6u20-linux-i586.bin

解压: ./jdk-6u20-linux-i586.bin

拷贝: mv jdk1.6.0_20 /home/homer/eclipse/

配置: sudo  vi  /etc/profile

export JAVA_HOME=/home/homer/eclipse/jdk1.6.0_20
export JRE_HOME=/home/homer/eclipse/jdk1.6.0_20/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

查看验证,如下图:

2) 卸载openjdk,重新安装jdk

a)卸载openjdk

点击左上角“ubuntu“的logo, 输入 “ubuntu software center”,查找软件中心管理

然后,选择“Installed”, 输入“openjdk”, 查找已安装的 openjdk,如下图:

选择“Remove”,卸载openjdk

b)重新安装jdk

$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

其实,除了上述两种解决方法外,如果当前JDK版本是规范的JDK 1.6以上(如:jdk1.7.0_05,我默认用的jdk版本),也会报错说不是正确的版本。

仔细分析Makefile文件,发现其依赖关系如下:

Makefile —> build/core/main.mk —> 进行了jdk的版本判断, 脚本代码如下图:

从上图,分析代码,不难看出“openjdk“ 和 “jdk1.7.0_05” 版本编译不通过的原因了吧。。。。

(1) 如果“java -version” 中包含了“openjdk”,则 “$(shell java -version 2>&1 | grep -i openjdk)” 过滤的“openjdk”不会为空,自然其与空不等,即ifneq条件成立,因此执行“java_version :="  设置为空

(2) 如果是(1)情况,java_version为空, 自然输出错误提示信息; 如果“java -version”包含了“jdk1.7.0_05”而不是“xx1.6xx“字样,第一行过滤出来的java_version也是为空,结果也输出错误提示信息。

找出了问题,那该又如何解决呢? 知道了原理,问题就简单了(如果你和我一样使用的是“jdk1.7.0_05“及以上的1.7版本)

修改 '^java .*[ "]1\.6[\. "$$]'    '^java .*[ "]1\.7[\. "$$]'

最后,编译Android源码:

make  -j4

参考推荐:

Android Source Download(google)

Android Source Building(google)

Initializing a Build Environment(google)

转载于:https://my.oschina.net/kangchunhui/blog/114141

Android 源码编译make的错误处理相关推荐

  1. Android 源码编译及常见错误及解决方法

    Android 源码编译及常见错误及解决方法 参考文章: (1)Android 源码编译及常见错误及解决方法 (2)https://www.cnblogs.com/kyyblabla/p/360393 ...

  2. Android源码编译make的错误处理

    https://www.linuxidc.com/Linux/2011-11/47411.htm Android源码下载:官方下载 或参考android源码下载方式 Android编译版本: PLAT ...

  3. linux系统编译时make出错,Android源码编译make的错误处理

    Android编译版本:PLATFORM_VERSION=4.0.1(最新Android 4.0.1) OS 操作系统平台: Linux yanggang 2.6.35-30-generic #61- ...

  4. android源码模块编译错误,【转】Android 源码编译make的错误处理--不错

    原文网址:http://blog.csdn.net/ithomer/article/details/6977386 Android编译版本:PLATFORM_VERSION=4.0.1(最新Andro ...

  5. android 编译 oserror,jdk/java版本与Android源码编译中的错误

    错误一:javap未指向有效的java版本 Traceback (most recent call last): File"../../base/android/jni_generator/ ...

  6. Android源码编译make的各类错误解决方案汇总

    问题: You are attempting to build with the incorrect version of java.  Your version is: java version & ...

  7. Android4.0源码编译方法以及错误解决方案

    from:http://blog.csdn.net/wanjun8659/article/details/8095664 历时一个星期,终于将android4.0源码编译成功,中间经历了各种曲折,非常 ...

  8. android源码编译出错的原因

    (1)gcc的版本过高,由于android源码编译要求为4.3,如果你的gcc版本为4.4,那你的编译可能会失败的!我的系统是ubuntu 10.04,默认的gcc版本为4.4,gcc-4.4太严格, ...

  9. Android源码编译(基于Ubuntu18.0.4)

    文章目录 一.环境搭建 硬件要求 软件要求 操作系统和 JDK 主要软件包 软件安装 Git安装 repo工具安装 安装 openJDK 8 其他依赖安装 二.源码下载 建立源码文件夹 初始化仓库 源 ...

  10. Android源码编译原生模拟器

    Android源码编译原生模拟器 源代码下载 安装repo 确保主目录下有一个 bin/ 目录,并且该目录包含在路径中: mkdir ~/bin PATH=~/bin:$PATH 下载 Repo 工具 ...

最新文章

  1. ORACLE-删除同一字段中重复值函数
  2. android 数据存储怎么保存图片_遇到验证码怎么办?Python编写一个验证码图片数据标注GUI程序!...
  3. 数学符号正三角形△和倒三角形▽的意思
  4. linux kernel的问与答
  5. access中判断回文的代码_LeetCode 第九题 回文数
  6. HTML5 file api读取文件的MD5码工具
  7. 【转】代码里的命名规则:错误的和正确的对比
  8. 面向对象设计之CRC卡片
  9. java源码如何启动脚本_使用Shell脚本如何启动/停止Java的jar程序
  10. 小程序-Hello World
  11. mysql数据库导入导出sql文件
  12. 微信小程序开发 - 模板与配置
  13. android陀螺仪 cemu,CEMU安卓手柄陀螺仪教程
  14. 软件项目管理的基本流程
  15. 【观察】帆软:扎根于BI,收获于未来
  16. 网页图标/images/favicon.ico type=image/x-icon /
  17. 【软件工程】实验4:校园二手物品交易过程的UI设计
  18. 纸牌屋第一季(2)--part2
  19. 第十七周学习周报(20180625-2018060701)
  20. 细读Autoformer—空间计量分析

热门文章

  1. win10设置Ctrl+Shift切换输入法
  2. 给学计算机的男友买什么礼物,毕业季,男朋友初入职场送礼好物推荐!
  3. 微信会员卡,微信会员系统
  4. python生成树状图_使用python的分层聚类树状图
  5. app推广渠道数据统计Xintall
  6. 完整版本支付宝扫码支付 c#版本
  7. outlook2016 打不开超链接
  8. 新人如何快速融入团队
  9. 算法注册机编写扫盲之续篇--第一课
  10. ucharts 柱状图圆角_调整柱状图圆角弧度