Android编译问题

来源:互联网 发布:linux线程优先级设置 编辑:程序博客网 时间:2024/05/16 14:40

一、JDK版本问题

1.安装JDK5

下载:JDK5

安装:

cp jdk-1_5_0_22-linux-amd64.bin /usr/lib/jvm/cd /usr/lib/jvm/chmod u+x jdk-1_5_0_22-linux-amd64.bin./jdk-1_5_0_22-linux-amd64.binrm jdk-1_5_0_22-linux-amd64.binmv jdk1.5.0_22/ java-1.5.0.22-sun/ln -s java-1.5.0.22-sun java-5-sun

2.添加

update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-1.5.0.22-sun/bin/javac 300update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-1.5.0.22-sun/bin/java 300

3.配置

update-alternatives --config javaupdate-alternatives --config javac

二、编译问题汇总

1.Could not load 'clearsilver-jni'

在64位的Ubuntu Linux环境编译Android 2.3.4时,遇到如下错误:

Could not load ’clearsilver-jni’java.library.path = out/host/linux-x86/libmake: *** [out/target/common/docs/api-stubs-timestamp] Error 45make: *** Waiting for unfinished jobs....Could not load ’clearsilver-jni’java.library.path = out/host/linux-x86/libmake: *** [out/target/common/docs/doc-comment-check-timestamp] Error 45

原因:这是因为在编译clearsilver时引用了32位的设定。

此时有如下两种方法解决问题,方法一:

将clearsilver在Makefile里的LOCAL_LDFLAGS += -m32和LOCAL_CFLAGS += -m32由原本的-m32设定变为-m64。

find ./external/clearsilver/ -name '*.mk' -exec grep -l 'm32' {} \; -exec sed -i 's/m32/m64/g' {} \;

./external/clearsilver/util/Android.mk

./external/clearsilver/cs/Android.mk

./external/clearsilver/java-jni/Android.mk

./external/clearsilver/cgi/Android.mk

而使用这个方法,若将原码拿到32位的Ubuntu Linux环境编译时,则需要反过来将-m64修改为-m32。

方法二:

将clearsilver在Makefile里的LOCAL_LDFLAGS += -m32和LOCAL_CFLAGS += -m32直接注释掉。

find ./external/clearsilver/ -name '*.mk' -exec grep -l 'm32' {} \; -exec sed -i 's/LOCAL_CFLAGS\ +=\ -m32/#\ LOCAL_CFLAGS\ +=\ -m32/g' {} \;find ./external/clearsilver/ -name '*.mk' -exec grep -l 'm32' {} \; -exec sed -i 's/LOCAL_LDFLAGS\ +=\ -m32/#\ LOCAL_LDFLAGS\ +=\ -m32/g' {} \;

采用这种方法,原码不论在32位或64位元的Ubuntu Linux编译时,都将不再遇到该问题。

2.Your version is: java version "1.5.0_22".

解决办法:

vi /etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"#add by tank for JDK6PATH+="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/java-6-sun/bin"JAVA_HOME+="/usr/lib/jvm/java-6-sun"CLASSPATH+="/usr/lib/jvm/java-6-sun/lib"#for JDK5PATH+="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/java-5-sun/bin"CLASSPATH+="/usr/lib/jvm/java-5-sun/lib"JAVA_HOME+="/usr/lib/jvm/java-5-sun"#end tank


0 0