在mac osx lion中成功编译android 2.3(Gingerbread)
2012-11-27 09:53
197 查看
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经常上不去,所以直接下的网盘中的源码包)
http://www.verycd.com/topics/2906182/
http://hi.baidu.com/liuz19911010/item/739d062052acf7c9ee10f11e
c).创建文件名大小写敏感的磁盘(我是存在移动硬盘中)
磁盘工具>>文件>>新建空白映像文件
随便起名,这里大小尽量大点(我给了30G)格式为mac os扩展(区分大小写)
挂载映像(第一次应该会自动挂载)
再把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
modify ./external/elfutils/config-compat-darwin.h.
replace:
with:
----------------------------------------------
3.2 symbol(s) not found for architecture i386
解决:
--------------------------------------------
cp external/qemu/Android.mk external/qemu/Android.mk_backup
vim external/qemu/Android.mk (全部加#注释掉)
--------------------------------------------
----------------------------------------------
参考文章
http://jinganglang777.blog.163.com/blog/static/79085497201273061657988/
/article/10270522.html
http://blog.sephiroth.it/
http://source.android.com/source/initializing.html
一直想编译个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经常上不去,所以直接下的网盘中的源码包)
http://www.verycd.com/topics/2906182/
http://hi.baidu.com/liuz19911010/item/739d062052acf7c9ee10f11e
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 |
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; } |
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 (全部加#注释掉)
--------------------------------------------
----------------------------------------------
参考文章
http://jinganglang777.blog.163.com/blog/static/79085497201273061657988/
/article/10270522.html
http://blog.sephiroth.it/
http://source.android.com/source/initializing.html
相关文章推荐
- Ubuntu 10.04(32位)下 编译Android 2.3源码全过程 || 编译android4.0成功
- android2.3系统成功下载编译移植到BeagleBoard上
- 解决Android Gingerbread (2.3) 编译错误
- MAC下的android环境编译coco2d-x,运行成功!
- Ubuntu32位编译Android2.3 -Gingerbread
- MAC系统下编译FFmpeg-Android (从编译到移植Androidstudio成功)(一)
- RH系列linux上编译android2.3(gingerbread)
- Ubuntu32位编译Android2.3 -Gingerbread
- 编译在N1(G5, Passion)上运行的姜饼(GingerBread,Android 2.3)代码
- 借鉴前辈+实践成功的Exsi 安装Mac OSX Lion 10.7
- Mac OS X Lion 下编译Android 源码
- Mac下编译Android源码(OSX10.9 Mavericks)
- Android源码编译(一)----------->TI-Android-GingerBread-2.3-DevKit-1.0 系统定制(just for beagleboard xm Rev B)
- MAC上反编译android apk---apktool, dex2jar, jd-jui安装使用(含手动签名)
- 编译android2.3,“没有那个文件或目录”问题
- Google C++ unit test 在ARM Android 2.3 上的编译与使用
- windows下编译最新版ffmpeg3.3-android,并通过CMake方式移植到Android studio2.3中
- aosp android在Ubuntu 16.04上编译成功
- mac上配置android开发环境并把cocos2dx项目编译到android
- [Android 编译] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程