一、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.bin rm jdk-1_5_0_22-linux-amd64.bin mv 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 300 update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-1.5.0.22-sun/bin/java 300
3.配置
update-alternatives --config java update-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/lib make: *** [out/target/common/docs/api-stubs-timestamp] Error 45 make: *** Waiting for unfinished jobs.... Could not load ’clearsilver-jni’ java.library.path = out/host/linux-x86/lib make: *** [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 JDK6 PATH+="/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 JDK5 PATH+="/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