Android学习【Android内核编译流程和错误笔记】

博客:http://blog.csdn.net/muyang_ren

Ubuntu14.04 LTS(要求是64位长期支持版LTS)

Jdk1.8

内核:android4.0



一:jdk

1、解压jdk,获得路径

2、

sudo vim /etc/environment

修改为:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/lhy/jdk/jdk1.8.0_45/bin"
JAVA_HOME="/home/lhy/jdk/jdk1.8.0_45"
CLASSPATH=".:/home/lhy/jdk/jdk1.8.0_45/lib"

3、source /etc/environment

二:ubuntu配置

需要注意jdk的版本和编译器gcc、g++的版本问题,

官网配置:http://source.android.com/source/initializing.html

Ubuntu14.04:

sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zlib1g-dev:i386 zip

把下面出现错误需要安装的都放在这了
sudo apt-get install g++
sudo apt-get install gcc-multilib
sudo apt-get install g++-4.4-multilib
sudo apt-get install flex
sudo apt-get install libncurses5-dev
sudo apt-get install lib32ncurses5-dev
sudo apt-get install gawk(这个是网上看到需要装的,我就提前安装就没出错了)


出现错误:

下列软件包有未满足的依赖关系:
 g++-multilib : 依赖: gcc-multilib (>= 4:4.8.2-1ubuntu6) 但是它将不会被安装
                依赖: g++ (>= 4:4.8.2-1ubuntu6) 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系

处理方法:

sudo apt-get install g++
sudo apt-get install gcc-multilib


出现错误:

Checking build tools versions...
************************************************************
You are attempting to build with the incorrect version
of java.

Your version is: java version "1.8.0_45".
The correct version is: Java SE 1.6.

Please follow the machine setup instructions at
    http://source.android.com/source/download.html
************************************************************
build/core/main.mk:131: *** stop。 停止。

解决办法,

使用jdk 1.6
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/lhy/jdk/jdk1.6.0_29/bin"

JAVA_HOME="/home/lhy/jdk/jdk1.6.0_29"
CLASSPATH=".:/home/lhy/jdk/jdk1.6.0_29/lib"


出现错误:

g++: selected multilib ‘32‘ not installed
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] 错误 1

解决办法:

需要安装gcc、g++的multilib包,直接执行下面的命令,会自动安装g++、gcc的multilib包;
    sudo apt-get install g++-4.4-multilib


出现错误(这个其实可以忽略):

注意:某些输入文件使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
注意:某些输入文件使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。

解决办法(手敲,别tab键,机不好会卡好久):make update-api



出现错误:

/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

出现错误:

host C: adb <= system/core/adb/transport_usb.c
host C: adb <= system/core/adb/commandline.c
host C: adb <= system/core/adb/adb_client.c
host C: adb <= system/core/adb/sockets.c
host C: adb <= system/core/adb/services.c
host C: adb <= system/core/adb/file_sync_client.c
host C: adb <= system/core/adb/get_my_path_linux.c
host C: adb <= system/core/adb/usb_linux.c
host C: adb <= system/core/adb/utils.c
host C: adb <= system/core/adb/usb_vendors.c
host C: adb <= system/core/adb/fdevent.c
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] 错误 1

解决办法:

sudo apt-get install libncurses5-dev


发现错误:

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

解决办法:

sudo apt-get install lib32ncurses5-dev


发现错误:

dalvik/vm/native/dalvik_system_Zygote.cpp: In function ‘int setrlimitsFromArray(ArrayObject*)’:
dalvik/vm/native/dalvik_system_Zygote.cpp:194: error: aggregate ‘rlimit rlim’ has incomplete type and cannot be defined
dalvik/vm/native/dalvik_system_Zygote.cpp:217: error: ‘setrlimit’ was not declared in this scope
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libdvm_intermediates/native/dalvik_system_Zygote.o] 错误 1

解决办法:

$ vim dalvik/vm/native/dalvik_system_Zygote.cpp
添加头文件
 #include <sys/resource.h>


以下这个可以忽略

注意:某些输入文件使用了未经检查或不安全的操作。

注意:要了解详细信息,请使用 –Xli

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-18 08:10:49

Android学习【Android内核编译流程和错误笔记】的相关文章

android 学习-Android Fragment 深度解析

有过一些面试经验的人基本都深有体会,每次面试一般都会问到Fragment的知识,所以,今天我就单独把Fragment拿出来与大家分享一下. 会涉及到Fragment如何产生,什么是Fragment,Fragment生命周期,如何静态和动态使用Fragment,Fragment回退栈,Fragment事务,以及Fragment的一些特殊用途,例如:没有布局的Fragment有何用处?Fragment如何与Activiy交互?Fragment如何创建对话框?Fragment如何与ActionBar集

Android学习——android命名规范

参考博客:http://blog.csdn.net/vipzjyno1/article/details/23542617 刚接触android的时候,命名都是按照拼音来,所以有的时候想看懂命名的那个控件什么是什么用的,就要读一遍甚至好几遍才知道,这样的话,在代码的审查和修改过程中就会浪费不少不必要的时间.如果就是我一个人开发,一个人维护的话还好,可是如果一个项目是团队分工合作,这样让你的同事去看你的代码就更加吃力了,因为大家之间的编程方式不一样,所以,在开发过程中,命名规范统一尤为重要,最好是团

Android学习-- android 权限大全

android.permission.ACCESS_CHECKIN_PROPERTIES  允许读写访问"properties"表在checkin数据库中,改值可以修改上传( Allows read/write access to the "properties"table in the checkin database, to change values that get uploaded)    android.permission.ACCESS_COARSE_

Android学习——android:cacheColorHint=“#00000000”

listView.setCacheColorHint(0); 或者android:cacheColorHint="#000000" 去除listview的拖动背景色 自定义listview的时候,当你不使用android:cacheColorHint="#00000000"会出现下面选中一个空间黑色底色的情况,破坏整体美观度: 当你不使用android:listSelector属性,默认会显示选中的item为橙黄底色,有时候我们需要去掉这种效果: listview

Android学习–Android app 语言切换功能

功能: app用户根据自己的语言喜好,设置app语言.语言设置只针对本app,并在下次启动应用时保留前一次启动设置. 更新语言: public static void changeAppLanguage(Resources resources, String lanAtr) { Configuration config = resources.getConfiguration(); DisplayMetrics dm = resources.getDisplayMetrics(); if (la

内核编译之ACPI错误,ACPI: [Package] has zero elements

[email protected]:/usr/src/linux-3.18.4/drivers/acpi$ grep -rn "has zero elements" ./* 匹配到二进制文件 ./acpi.o 匹配到二进制文件 ./built-in.o ./utils.c:364:        printk(KERN_ERR PREFIX "[Package] has zero elements (%p)\n", 匹配到二进制文件 ./utils.o [    1

内核编译、CentOS无人值守系统安装

CentOS 7内核编译流程:首先,让自己的虚拟机处于NET模式这样连着互联网的话,如果在安装过程中需要什么工具方便直接安装:将主机内的内核文件(可以到kernel.org网站直接下载)也就是自己所想要编译的内核版本压缩包发送东虚拟机中的/root目录下 这时也需要在客户机上有xftp工具才能进行文件的传输然后解压缩:~] tar xf linux-3.16.56.tar.xz -C /usr/src/kernels/解压完成之后:~] du -sh /src/kernels/linux-3.1

【Android 系统开发】 编译 Android 系统 u-boot 内核 源码 并烧写到 OK-6410A 开发板上

博客地址 : http://blog.csdn.net/shulianghan/article/details/40299813  本篇文章中用到的工具源码下载 : -- ok-6410A 附带的 Android 光盘 下载地址 : http://pan.baidu.com/share/link?shareid=3662728609&uk=2754759285 ; -- 光盘所含内容 : Android 引导 u-boot 源码, Android 内核 源码, Android 系统源码, 交叉编

Android源代码和内核源代码的下载,编译和运行

笔者根据罗升阳老师的<Android 系统源代码情景分析>一书,尝试下载,编译和运行Android源代码和内核源代码.但可能是软件源"被墙"或版本更新的原因,期间遇到诸多问题.笔者求助于强大的度娘和谷歌,终于编译成功,现将修改的步骤记录如下: 一.下载相关的工具包和依赖包 1.git工具的下载,不多说 2.Java SDK的下载(参考网址:http://blog.csdn.net/zjclugger/article/details/11762085) 此处建议下载jdk1.