您的位置:首页 > 移动开发 > Android开发

Ubuntu10.04 LTS 64位编译android4.1.2_r1遇到的错误及解决方法

2013-04-17 14:37 495 查看
使用google推荐的ubuntu10.04LTS 64位环境编译android4.1.2_r1.遇到很多问题,现把解决方法总结如下:

编译前先把下列目录用chmod -R a+x 命令递归加上可执行权限。

/prebuilts/tools/

/extrnal/

/frameworks/compile/libbcc/tools/

/build/core/find-jdk-tools-jar.sh

/build/tools/

还有一个mkuserimg.sh忘记哪个目录了

当然,编译出错permission denied的时候再看哪些没有可执行权限的,加上可执行权限。

1、错误:out/target/product/crespo/obj/STATIC_LIBRARIES/libext_intermediates/libxt_CONNMARK.c: 出的一堆错误

解决方法:在external/iptables/extensions/libxt_CONNMARK.c 文件里添加结构体定义

struct xt_connmark_tginfo1 {

u_int32_t ctmark, ctmask, nfmask;

u_int8_t mode;

};

enum {

XT_CONNMARK_SET = 0,

XT_CONNMARK_SAVE,

XT_CONNMARK_RESTORE

};

2、错误:out/target/product/crespo/obj/STATIC_LIBRARIES/libext_intermediates/libxt_MARK.c:出的一堆错误

解决方法:在external/iptables/extensions/libxt_MARK.c 文件中添加结构体定义

struct xt_mark_tginfo2 {

uint32_t mark, mask;

};

3、错误:/extrenal/iptables/...没有xt_dscp.h

解决方法:在本地新建一个xt_dscp.h文件,复制http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/include/linux/netfilter/xt_dscp.h内容到文件。

并修改数据类型和目标平台一致,即把__u8改成u_int8_t,把__u32改成u_int32_t。修改后的文件已经上传到附件(抱歉,不知道怎么上传文件)。

最后把xt_dscp.h复制到/bionic/libc/kernel/common/linux/netfilter目录下。

4、错误: error: undefined reference to 'WebCore::CSSParser::lex()'

解决方法:touch external/webkit/Source/WebCore/css/tokenizer.flex

新建一个prebuilt/linux-x86/flex/ 目录

把/sdk/prebuilt/linux-x86/flex/flex-2.5.4a文件复制到新建的目录下

chmod a+x使之有可执行权限

这个问题应该也可以通过修改编译参数来解决,但是我这里就偷懒了。

基本上就遇到这些错误。编译时间根据机器配置而定,我同时在两台不同的笔记本上编译。一台双核主频共4000,2G内存,除去解决出错问题的时间大概3小时左右。

另一台单CPU主频800,1G内存,编译的非常非常非常慢,几度想要放弃,但是想着闲着也是闲着,就扔一边跑了。加上解决问题的时间,用了三天才出结果。

用fastboot工具把编译结果刷到google nexus s上,虽然能够显示界面,但是系统服务总是死掉,导致nexus s不断重启。没有办法只好又刷回2.3.4。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: