今天下了Android2.2源码
repo init -u git://android.git.kernel.org/platform/manifest.git
下载完成后编译,,遇到几个问题:
1 提示Java版本不对,正确的版本是1.6的,而我的是1.5的,此时想可能是2.2版本升级之后要求只能用1.6的Java,于是,更换Java版本,
删除1.5,清除环境变量(以前是手动配置的),
apt-get install sun-java6-jdk sun-java6-jre
Java -version 检查版本信息
但是编译又出现问题。
2 提示:
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: No such file or directory
很奇怪,为什么会与usr中的相关呢?(知道的告小弟一声,先谢过!)
在/usr/include/gnu只有文件 stubs-32.h,文件 /usr/include/gnu/stubs.h中的内容为:
#include <bits/wordsize.h>
#if __WORDSIZE == 32
# include <gnu/stubs-32.h>
#elif __WORDSIZE == 64
# include <gnu/stubs-64.h>
#else
# error "unexpected value for __WORDSIZE macro"
#endif
3后来更改repo init 为
repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
直接指定要下载的版本,编译发现竟然不一样(我觉得应该一样啊),这时又提示Java1.5才是正确的版本!!!搞什么啊?这么复杂!
他们之间什么关系啊??郁闷啊。
又把java换了,编译就通过了。
补充:
下面是 PoemCode 提出的解决办法:
apt-get install libc6-dev-amd64
apt-get install g++-multilib lib64stdc++6
apt-get install lib64z1-dev
具体细节参看http://www.poemcode.net/2010/07/android-stubs-64/