Loading [MathJax]/jax/output/CommonHTML/config.js
部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android 源码编译make的错误处理

Android 源码编译make的错误处理

作者头像
阳光岛主
发布于 2019-02-19 10:14:28
发布于 2019-02-19 10:14:28
2.7K00
代码可运行
举报
文章被收录于专栏:米扑专栏米扑专栏
运行总次数:0
代码可运行

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ 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)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2011年11月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[ Andriod篇 ] - Android 5.0.2 源码编译
Android 源码版本比较多, 这里选择的是 韦东山第四期 Andriod 教程中的 Android-5.0.2, 直接从百问网公开的百度网盘链接下载。由于源码本身已经集成了 Tiny 4412开发板相关配置,省去了很多工作量。
程序手艺人
2019/02/20
2.6K0
ubuntu编译安卓源码_安卓源码编译环境
编译android源码只支持jdk 1.6,所以如果需要编译源码必须下载jdk 1.6,不能下载最新的jdk 1.7,如果不需要编译源码则可以下载1.7版本的。
全栈程序员站长
2022/11/11
16K0
编译Android5.1.1源码
编译Android源码是为了更好的学习源码,当然,如果要做第三方ROM适配,也可以尝试;我们这篇重点学习如下内容:
GitOPEN
2019/01/29
1.2K0
ubuntu14.04编译Android4.4源码
安装JDK: 因为我是编译android4.4,故jdk6即可满足。ubuntu14.04不支持apt-get安装,我们来手动安装一下:
用户2930595
2018/08/23
6040
Android源码编译(ubuntu16.04+android P)简介
这里我们使用虚拟机来安装ubuntu。至于VMware具体安装方法大家自行百度。这里贴出我所用的版本。
用户2929716
2018/08/23
1.8K0
Android源码编译(ubuntu16.04+android P)简介
Ubuntu 16.04下iTop4412环境搭建+Android4.0.3编译
使用cd 命令,进入解压出来的“Android_JDK” -->“jdk6”文件夹,运行脚本文件
知忆
2021/06/13
8150
android源码编译(ubuntu16.04 64位)
第一篇:android源码编译(ubuntu16.04 64位) 第二篇:编译补充(关于下载代码和内存不足问题)
李小白是一只喵
2020/04/24
1.6K0
Android源码编译出错No rule to make...
在领导出差项目量产的节骨眼上,公司服务器出问题了,具体是硬盘问题,于是就派我这个刚入行半年的来重装ubuntu系统然后搭建服务器,好不容易在别人的指导下搭建起来了,却又出这样那样的问题(这些问题都是重新安装了ubuntu12.0.4之后) 问题1,挂载硬盘 因为原先主机有两个硬盘,一个系统盘,一个数据盘,因为系统盘坏掉了但数据盘完好,所以重装完系统后就把数据盘挂上,数据盘里存着代码,省的再重新下载。挂载硬盘还算顺利,期间也出了一两个小问题,但都好解决 问题2,来说说编译问题吧。 首先是账户各种权限问题,
fanfan
2018/01/24
2.6K0
[Android 源码] Android源码下载「建议收藏」
@page { margin-top: 0.79in margin-right: 0.79in margin-bottom: 0.79in margin-left: 0.79in } P{margin-bottom:0.08in;direction:ltr;color:rgba(0, 0, 0, 1);widows:0;orphans:0} P.western{font-family:"DejaVu Serif", serif;font-size:12pt;so-language:en-US} P.cjk{font-family:"DejaVu Sans";font-size:12pt;so-language:zh-CN} P.ctl{font-family:"Lohit Hindi";font-size:12pt;so-language:hi-IN} A:link{so-language:zxx}
全栈程序员站长
2022/09/20
2.6K0
使用Docker编译Android系统源码
最近公司业务转型,开始倒腾起安卓系统,做了几个月的安卓APP开发,最近又需要做系统定制,所以撸起袖子搞起… 首先干嘛?部署开发环境,开发环境一直是让人头疼的问题,何况我们不只需要一套环境,这样整来整去很容易就把系统玩废了,一旦出了问题就等着崩溃吧。所以借着这几年火起来的docker布置一个我们的开发环境。 其实环境配置大同小异,我们只是需要把编译环境配置在docker中就可以了,在这里只做记录,过程仅供参考。
望天
2019/05/26
2.1K0
cubieboard2 android,在cubieboard2双卡版上从零构建Android4.2.2系统「建议收藏」
板子买了一段时间,终于有时间可以玩玩了,论坛上找浪费了很多时间。把虚拟机环境搭建起来,编译好镜像就可以直接使用烧写工具烧写到TF卡上了。由于买的是双TF卡插槽,没有nand,所以只能在TF卡上制作镜像了。制作过程参考官方文档,好好总结一下,一来以后自己再做时图懒图方便,二来可以方便后来人。
全栈程序员站长
2022/09/16
1.6K0
Ubuntu 16.04上编译Android主线最新代码
本文说明如何在Ubuntu 16.04(64位)上编译Android最新主线代码,介绍如何下载代码、建立编译环境、编译代码。
用户8704835
2021/06/07
1.3K0
Android源码编译详细步骤
在编译源码之前需要做一些准备操作, 详细步骤如下: 1. 安装JDK, google官方要求编译2.3源码需要JDK1.6. 1). 下载JDK1.6, 下载地址:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html、http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64
乱码三千
2021/07/29
1.9K0
Android源码编译详细步骤
Android 11(Q)源码编译
参考官方文档https://source.android.google.cn/setup/build/initializing
用户2929716
2021/06/29
1.7K0
飞凌 OK113i-C 全志T113-i开发板初体验
板子做工精致很有份量,拿在手里沉甸甸的,各种接口一应俱全——USB、TF 卡座、SIM卡座、4G模块卡座、网口、RGB LCD接口、LVDS、RS485、CAN、各种音频口、TV-in/TV-Out,板上还自带一个RTL8723du wifi/蓝牙二合一模块,作为一块主打工业控制的主控板这些接口实属绰绰有余了。手里的板子是256MB内存+256MB nand flash版本(这个是低配版本,还有个512MB+8GB emmc的高配版本),飞凌开发文档中提到已经移植好了Qt5开发环境,所以这个内存跑跑Qt的UI程序是再合适不过了,可惜手里没有匹配的开箱即用的LCD显示屏不然接上直接能试试出厂自带的Qt测试程序了。
阿志小管家
2024/02/02
5100
飞凌 OK113i-C 全志T113-i开发板初体验
Ubuntu Touch环境搭建
最近搞了一下Nexus 5的MultiRom Manger,体验了一把Ubuntu Touch和Android L,总体感觉还不错,不过Android L的NFC驱动还有问题,Ubuntu Touch优化还不足,画面有点卡,而且无法关背光。于是萌生了参与Ubuntu Touch驱动开发的念头,也算是把工作当成一种兴趣吧。
sickworm
2019/02/27
1.5K0
Daily Tips(Updated)
[No.007] 解决Ubuntu16.04 字体太细发虚(表现在Chrome中浏览中文) 这个问题产生是由于Ubuntu 16.04 LTS 的默认中日韩字体packagefonts-noto-cjk有一个bug,如果网页没有把其页面语言指定为中日韩字体,那么会用细的字体来显示。解决方法如下:
GitOPEN
2019/01/29
1.5K0
Android源码环境搭建(aosp Ubuntu 16.04/20.04)
Android源码环境搭建(aosp Ubuntu 16.04) 作者:千里马 腾讯课堂千里马手把手教你学framework课程地址:https://ke.qq.com/course/package/
千里马学框架
2023/06/27
8130
Android源码环境搭建(aosp Ubuntu 16.04/20.04)
Android 编译Android7.0版本源码
  首先说说为什么要编译Android7.0的源码,因为当我们去做系统定制开发的时候,就需要这么去做,举个例子,你们公司有一个客户是做电视机顶盒的,现在购买了你们公司的产品,要求你们公司提供相关的Android系统驱动,类似音频驱动、视频驱动之类的文件,能让这个文件再客户的机顶盒上正常使用,针对这个问题我们要怎么做呢?
晨曦_LLW
2023/07/10
4970
Android 编译Android7.0版本源码
海思AI芯片(Hi3516DV300/CV500)开发(搭建Linux开发环境)
前言:此篇搭建环境的 Linux 平台为 ubuntu16.0.4 64 位系统,sdk 的目标平台为Hi3519DV300\CV500 系列。
程序员小猿
2021/01/19
3.5K0
海思AI芯片(Hi3516DV300/CV500)开发(搭建Linux开发环境)
相关推荐
[ Andriod篇 ] - Android 5.0.2 源码编译
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验