在mac osx lion中成功编译android 2.3(Gingerbread)

0、前言
一直想编译个android系统以作今后的调试等用,于是终于在昨天(刚搬完家,累死了。。。)晚上开始动手做这件事,网上的资料大多数都是介绍关于在Linux下的android编译,要么就是android源码的版本号跟我这不一致。我现在手边只有个装了mac osx lion的air,而且真机也是2.3的,为了以后开发上的方便,还是决定编译2.3。过程中遇到了不少的麻烦。熬到快2点了,还是没搞定(天朝可恶的网!!上不了google groups,可恨!!!),今天(2012年11月27日星期二 )早上起来接着弄。终于搞定了。。。。8:50开始编译的,n久时间。

1、环境
----------------------------------------------
a).mac osx lion 10.7.4
b).java version "1.6.0_35"
     Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811)
     Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)
c).Python 2.7.1 (r271:86832, Jul 31 2011, 19:30:53)
d).gcc4.2
----------------------------------------------

2、step by step
----------------------------------------------
a ).安装jdk6(app store)
b ).下载android源码
(我这网络google经常上不去,所以直接下的网盘中的源码包)
c).创建文件名大小写敏感的磁盘(我是存在移动硬盘中)
磁盘工具>>文件>>新建空白映像文件
随便起名,这里大小尽量大点(我给了30G)格式为mac os扩展(区分大小写)
挂载映像(第一次应该会自动挂载)
hdiutil attach [映像路径] -mountpoint /Volumes/挂载点
再把b)中源码放到这个映像中。
----------------------------------------------
d).安装macosx10.5.sdk:
下载地址: http://download.csdn.net/detail/guoguoljg/4095743(感谢gougouljg的贡献)
sudo mkdir /Developer 
安装时要选择安装在/Developer中(也可以通过修改.mk文件,这里为了方便。)。
----------------------------------------------
e).接着把第3步中的3个error全改过来,进入源码根目录再make。。。

----------------------------------------------

3、error解决
----------------------------------------------
3.0 clearsilver错误
host C: libclearsilver-jni <= external/clearsilver/java-jni/j_neo_util.c
external/clearsilver/java-jni/j_neo_util.c:258:12: error: expected expression
    return nerr_raise(NERR_ASSERT,
           ^
external/clearsilver/java-jni/../util/neo_err.h:88:69: note: expanded from macro 'nerr_raise'
   nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
                                                                    ^
external/clearsilver/java-jni/j_neo_util.c:269:12: error: expected expression
    return nerr_raise(NERR_ASSERT,
           ^
external/clearsilver/java-jni/../util/neo_err.h:88:69: note: expanded from macro 'nerr_raise'
   nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)

解决:
sudo bash
mv /usr/bin/cc /usr/bin/cc_bak
mv /usr/bin/c++ /usr/bin/c++_bak
ln -s /usr/bin/llvm-gcc-4.2 /usr/bin/cc
ln -s /usr/bin/llvm-g++-4.2 /usr/bin/c++
----------------------------------------------
3.1  strnlen错误
详情请看: http://blog.sephiroth.it/
./external/elfutils/config-compat-darwin.h:42: error: static declaration of ‘strnlen’ follows non-static
1
./external/elfutils/config-compat-darwin.h:42: error: static declaration of ‘strnlen’ follows non-static declaration

modify ./external/elfutils/config-compat-darwin.h.
replace:

1
2
3
4
5
6
7
static  inline  size_t strnlen  ( const  char  *__string ,  size_t __maxlen )
{
int len  =  0 ;
while  (__maxlen --  &&  *__string ++ )
len ++;
return len ;
}

with:

1
2
3
4
5
6
7
8
9
#if 0
static  inline  size_t strnlen  ( const  char  *__string ,  size_t __maxlen )
{
int len  =  0 ;
while  (__maxlen --  &&  *__string ++ )
len ++;
return len ;
}
#endif
----------------------------------------------
3.2 symbol(s) not found for architecture i386
解决:
---------------------- ----------------------
cp external/qemu/Android.mk external/qemu/Android.mk_backup
vim external/qemu/Android.mk (全部加#注释掉)
---------------------- ----------------------

----------------------------------------------
参考文章


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值