android4.1.1系统编译全过程

原创 2012年08月30日 21:43:22
一、编译环境:
首先介绍编译中使用的工具:
虚拟机:    vmare 9 下载地址:http://blog.csdn.net/hudan2714/article/details/7902654
linux平台:ubuntu 12.04 64位
jdk:              sun-java6-jdk (64位)
交叉编译工具链:gcc 使用的版本是:4.6.3 

想要完成最终的编译,当然首要的就是检查环境:
1、安装的ubuntu设置空间大小:至少需要30G
     目前下载的包就有10G:有图有真相:
       
       包括解压编译后大小有30G了:
     
      所以空间一定要够了才行。

2、gcc和g++不能使用使用4.4版本了(编译android4.0系统使用的是4.4),
                       现在只要使用系统自带的4.6.3(ubuntu12.04) 就可以了。
      

3、jdk版本:sun-java6-jdk
       


二、编译:
        编译过程不知道,可以查看官方文档了。这里做简单说明:
        1.source build/envsetup.sh   这是向系统导入不同的厂商版本,并添加m命令。
        2.lunch 选择编译厂商版本。
        3.mm    编译版本

         还是看图说话吧:
           

            当然这里的lunch full-eng是编译所有,如果嫌慢,就单独编译某一个也可。
             

              再mm就可以编译了(必须要source了,才有mm命令,而且只在此terminal有效)
               


三、编译中遇到的错误:
       错误太多,做了一些总结,有点乱,如果编译过程中遇到错误,可以来查看:
/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

make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] Error 127
解决方法: sudo apt-get install flex

make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h] Error 25
解决方法:sudo apt-get install gperf

/usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directoryIn file included from /home/hudan/android/source/android4.1.1/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6/bin/../sysroot/usr/include/sys/types.h:27:0,
                 from frameworks/native/include/utils/Errors.h:20,
                 from frameworks/native/include/utils/String8.h:20,
                 from cts/suite/audio_quality/lib/include/Settings.h:21,
                 from cts/suite/audio_quality/lib/src/Settings.cpp:17:
/usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directoryIn file included from /usr/include/stdlib.h:25:0,
                 from cts/suite/audio_quality/lib/src/Adb.cpp:16:
/usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directory

compilation terminated.
compilation terminated.

compilation terminated.
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libcts_audio_quality_intermediates/src/SimpleScriptExec.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libcts_audio_quality_intermediates/src/Adb.o] Error 1
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libcts_audio_quality_intermediates/src/Settings.o] Error 1
In file included from /usr/include/semaphore.h:22:0,
                 from cts/suite/audio_quality/lib/include/Semaphore.h:21,
                 from cts/suite/audio_quality/lib/src/Semaphore.cpp:17:
/usr/include/features.h:324:26: fatal error: bits/predefs.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libcts_audio_quality_intermediates/src/Semaphore.o] Error 
解决方法:sudo apt-get install gcc-multilib 


error libGL.so: cannot open shared object file: No such file or directory
OSError: libGL.so: cannot open shared object file: No such file or directory

may appear on Linux systems when you try to launch VNL for the first time. To solve it, create (as administrator) a new link in /usr/lib:

sudo ln -s /usr/lib/libGL.so.1.2 /usr/lib/libGL.so

If you have a 64-bit Linux, use /usr/lib64 instead.

First check that you actually have "libGL.so.1.2" in /usr/lib or /usr/lib64; it might be called "libGL.so.1" or something else instead, or located in another directory, depending on the video drivers. You can use

locate libGL

to find the correct file to link to.

而我使用的是ubuntu 12.04 bit-64位,在/usr/lib/并没有libGL.so文件。

可以使用locate libGL查找此文件。结果:


找出了这么多,当然是选择64位平台下的libGL了。



但是针对这几个,不知道要选择哪一个好,还请高手指点。


Failed to load libGL.so

error libGL.so: wrong ELF class: ELFCLASS64

linux系统是64位的,这个命令不支持64位

最佳解决方案,把oralce-lib环境变量设置为lib32即可


最后选择ln还36位

代码:hudan@ubuntu:~/android/source/android4.1.1/out$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so


再运行编译好的system.img,出现如下的错误:


直接参数-ramdisk ramdisk.img去掉,结果模拟器跑起来了,但不能把内核启动起来。


no ABI error , when creating an Android virtual device



E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)

E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

解决:sudo rm /var/lib/apt/lists/lock


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


n file included from /usr/include/stdlib.h:25,
                 from build/tools/acp/acp.c:11:
/usr/include/features.h:323: 致命错误: bits/predefs.h:没有那个文件或目录编译中断。
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 错误 1

make: *** [out/host/linux-86/obj/STATIC_LIBRARIES/libcts_audio_quality_intermediates/src/Adb.o] Error 1

安装:libc6-dev-i386
     sudo apt-get install libc6-dev-i386


make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libwebcore_intermediates/LINKED/libwebcore.so] Error 1

make: *** Waiting for unfinished jobs....

make: *** [out/target/common/obj/APPS/android.core.tests.libcore.package.dalvik.no-core-tests-res_intermediates/noproguard.classes-with-local.dex] Error 130

上次make或或者mmm的时候生成一些错误的东西

可以使用:make clean 再重新make

解决:rm out/target/common/obj/APPS/ -r (如果还是有这样的错误,就只能clean了)


四、运行编译好的系统
vi /etc/profile
增加以下三句
最终运行配置,给大家截个图:

只需要这三句就OK

配置完,source /etc/profile 要是出现黑屏,建议重启一下。接下:

运行时只要:emulator


完美运行:



下面是遇到的问题,可以看看:

编译完系统后,用模拟器运行系统,在2.3之前只需要配置:
export ANDROID_PRODUCT_OUT=/home/hudan/android/source/android4.1.1/out/target/product/generic_x86
export PATH=$PATH:/home/hudan/android/source/android4.1.1/out/host/linux-x86/bin
但这样配置就一直出现如下的错误:
emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found.

If you are an Android SDK user, please use '@<name>' or '-avd <name>'
to start a given virtual device (see -help-avd for details).

Otherwise, follow the instructions in -help-disk-images to start the emulator

最后配置export ANDROID_BUILD_TOP=/home/hudan/android/source/android4.1.1
一切就都OK了。



如果是研究android源码的欢迎加群交流:android系统高级交流群:247039470







Ubuntu 12.04 64位编译android 4.1.1_r3

一.初始化编译环境            google推荐的编译环境是在Ubuntu LTS(10.04),但是新的LTS版本12.04已经出来,没必要在旧版本上做文章了,很多行特性和驱动10.04...
  • zxncvb
  • zxncvb
  • 2013年01月08日 09:39
  • 2949

android4.1.1系统编译全过程

android4.1.1系统编译全过程        一、编译环境: 首先介绍编译中使用的工具: 虚拟机:    vmare 9 下载地址:http://blog.csdn.net/...
  • canjianfantasy
  • canjianfantasy
  • 2013年01月29日 23:08
  • 1234

android4.1.1系统编译全过程

android4.1.1系统编译全过程                 一、编译环境: 首先介绍编译中使用的工具: 虚拟机:    vmare 9 下载地址:http://blog.csdn.net...
  • yihui8
  • yihui8
  • 2013年09月20日 17:29
  • 1344

u-boot-2016.09 make编译过程分析(一)

上一篇文章《》详尽分析了u-boot执行配置命令make xxx_defconfig的整个流程,本文着眼于编译流程,即配置完成后执行make命令生成二进制文件的过程。由于涉及的依赖和命令很多,也将ma...
  • guyongqiangx
  • guyongqiangx
  • 2016年09月17日 21:18
  • 2191

U-boot 编译学习--- U-boot 的编译链接过程

参考博客:http://blog.chinaunix.net/uid-18921523-id-165078.html U-BOOT是一个LINUX下的工程,在编译之前必须已经安装...
  • yikai2009
  • yikai2009
  • 2013年04月16日 19:40
  • 1271

深入理解:Android 编译系统

简介: Android Build 系统是用来编译 Android 系统,Android SDK 以及相关文档的一套框架。众所周知,Android 是一个开源的操作系统。Android 的源码中包含了...
  • huangyabin001
  • huangyabin001
  • 2014年07月03日 10:39
  • 23420

Android编译系统简要介绍和学习计划

在Android源码环境中,我们开发好一个模块后,再写一个Android.mk文件,就可通过m/mm/mmm/make等命令进行编译。此外,通过make命令还可制作各种系统镜像文件,例如system....
  • Luoshengyang
  • Luoshengyang
  • 2014年02月10日 01:02
  • 53559

Android编译系统分析三:make完整编译android系统

Android编译系统分析系列文章: android编译系统分析一 Android编译系统-mm编译单个模块 android编译系统分析(三)-make android编译系统(四)-实战:...
  • u011913612
  • u011913612
  • 2016年09月04日 20:12
  • 1916

基于Android源码编译系统应用

最近实验室项目有一个
  • u013487923
  • u013487923
  • 2014年05月17日 18:19
  • 1602

Android系统编译原理

Android系统编译原理 [1] 历史     2003年Android公司成立,系统开发     2005年Android被google收购     2007年11月5日,google...
  • vane918
  • vane918
  • 2017年01月20日 11:41
  • 675
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android4.1.1系统编译全过程
举报原因:
原因补充:

(最多只允许输入30个字)