Ubuntu 10.04 下编译Android froyo 问题


1,编译 Linux kernel的时候,原先的Android 2.1都可以通过的,但是这个android 2.2的就不行,而且操作都一样的。

即使把原先编译 andriod应用的两个操作提前:

. build/envsetup.sh

lunch

也还是会出如下错误

  CHK     include/linux/version.h
make[1]: “include/asm-arm/mach-types.h”是最新的。
  CHK     include/linux/utsrelease.h
  SYMLINK include/asm -> include/asm-arm
  CC      kernel/bounds.s
cc1: error: unrecognized command line option "-mlittle-endian"
cc1: error: unrecognized command line option "-mabi=aapcs-linux"
cc1: error: unrecognized command line option "-mno-thumb-interwork"
kernel/bounds.c:1: error: bad value (armv5t) for -march= switch
kernel/bounds.c:1: error: bad value (strongarm) for -mtune= switch

上述这个问题,网上查到了系CROSS_COMPILE没设置正确导致的。

后来发现,2.2版中linux kernel的makefile中CROSS_COMPILE确实没有设置,而2.1中就有设置。

所以2.2中的CROSS_COMPILE应该是由其他相关环境变量设定来获取的。

后来发现,使用 sudo passwd root 明了创建了root 命令后,以root命令操作如上的编译,就可以编译通过了。

2,编译android程序的出错

现象比较多,主要是java的不正常。

敲入 java -version

则可能出现如下错误:

 

程序“java”已包含在以下软件包中:
* gcj-4.4-jre-headless
* openjdk-6-jre-headless
* cacao
* gij-4.3
* jamvm
* kaffe

或者说java找不到。

如果java正常安装了,并且版本为正确1.5版,那只有一种可能就是环境变量的问题。

由于本人使用的是引用外部的sh来设置环境变量(source android.sh)。并没有修改系统的开机bash设定。

android.sh中设定了如下

export JAVA_HOME=/usr/java/jdk1.5.0_22
export CLASSPATH=$JAVA_HOME/lib/tools.jar:${JAVA_HOME}/lib/dt.jar:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH

设定后,用env查看页好像是对的。

后多方查找,发现了一个现象,如果是在linux下面新建一个android.sh文件,将这些设定写入,用source android.sh引用后,一切正常。

这个时候,java -version也能看到版本。

如果是在Windows下面建立一个android.sh,将其设定写入后,在linux 中调用source android.sh,就会出这种莫名其妙问题。

但是用文件比较工具比较这两个文件,都是相同的。

看来Windows文件系统和linux 文件系统还是很多不同啊!

相关内容