编译android2.2的源码出现问题,问题如下:

1)Java代码

    Checking build tools versions...
    build/core/main.mk:72:
************************************************************
    build/core/main.mk:73: You are attempting to build on a 32-bit system.
    build/core/main.mk:74: Only 64-bit build environments are supported
beyond froyo/2.2.
    build/core/main.mk:75:
************************************************************
    build/core/main.mk:76: *** stop. Stop.

解决办法:

    #ifneq (64,$(findstring 64,$(build_arch)))
    ifneq (i686,$(findstring i686,$(build_arch)))
    $(warning ************************************************************)
    $(warning You are attempting to build on a 32-bit system.)
    $(warning Only 64-bit build environments are supported beyond
froyo/2.2.)
    $(warning ************************************************************)
    $(error stop)
    endif

修改以下文件:

    external/clearsilver/cgi/Android.mk,
    external/clearsilver/java-jni/Android.mk,
    external/clearsilver/util/Android.mk,
    external/clearsilver/cs/Android.mk

改为

    disable LOCAL_CFLAGS += -m64
    disable LOCAL_LDFLAGS += -m64


2)Java代码

     Install: out/host/linux-x86/framework/droiddoc.jar  

     target Generated: libclearsilver-jni <=
out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/javalib.jar  

     host C: libclearsilver-jni <=
external/clearsilver/java-jni/j_neo_util.c  

     In file included from /usr/include/features.h:378,  

                      from /usr/include/string.h:26,  

                      from external/clearsilver/java-jni/j_neo_util.c:1:  

     /usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: 没有那个文件
或目录  

     make: ***
[out/host/linux-x86/obj/SHARED_LIBRARIES/libclearsilver-jni_intermediates/j_neo_util.o]
错误 1 

解决办法:

sudo apt-get install lib64z1-dev libc6-dev-amd64 g++-multilib
lib64stdc++6 

3)Java代码

打开此文件: 源码目录/build/core/main.mk   找到

      # Check for the correct version of java  
      java_version := $(shell java -version 2>&1 | head -n 1 | grep '[
"]1/.6[/. "$$]')  

      ifeq ($(strip $(java_version)),)  

      $(info
************************************************************)  

      $(info You are attempting to build with the incorrect version)  

      $(info of java.)  

      $(info $(space))  

      $(info Your version is: $(shell java -version 2>&1 | head -n 1).)  

      $(info The correct version is: 1.6.)  

      $(info $(space))  

      $(info Please follow the machine setup instructions at)  

      $(info
$(space)$(space)$(space)$(space)http://source.android.com/download)  

      $(info
************************************************************)  

      $(error stop)  

      endif 

解决办法:

把里面的数字"6"改成"5",用JDK 1.5编译 

 

 

##########################################################################

 

 

Ubuntu 10.04下编译Android 2.2源码先安装必须的软件和库程序:

$ sudo -s
$ apt-get update
$ apt-get install git-core gnupg  flex bison gperf libsdl-dev libesd0-dev  build-essential zip curl libncurses5-dev zlib1g-dev


然 后将cn99软件源添加到更新源,继续:
$ apt-get install sun-java6-jdk libwxgtk2.6-dev

下载源码:
$ mkdir mydroid
$ cd mydroid
$ repo init -u git://Android .git.kernel.org/platform/manifest.git
$ repo sync
编译源码:
$ make
...等待一个半小时...
配置环境变量,运行模拟器:
......

由于Android 2.2编译时需要使用jdk6,而子项目的makefile规则里判断若使用jdk6,则系统是 64位系统,使用64位编译模块。要想在32系统上正确编译,需要修改下面4个文件:

external/clearsilver/cgi/Android .mk
external/clearsilver/java-jni/Android .mk
external/clearsilver/util/Android .mk
external/clearsilver/cs/Android .mk


将文件中的判断语句中ifneq改为ifeq可通过编译
# This forces a 64-bit build for Java6
ifneq ($(filter 1.6%,$(java_version)),)
LOCAL_CFLAGS += -m64
LOCAL_LDFLAGS += -m64
endif

Ubuntu 10.04下编译Android 2.2源码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值