注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Allen小笔记

有时会忘记努力...

 
 
 

日志

 
 

Android Emulator  

2010-01-14 20:30:01|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
                                                                                                android emulator compile

今天我来说说在Ubuntu9.10下Android Emulator的编译过程.记录今天的血泪史.
1.下载源代码.这里我要说明的是:我并不是指下载整个Android source code,而仅仅是Emulator source code.
在终端输入:
$ sudo git clone git://android.git.kernel.org/platform/external/qemu.git
源代码下载成功后,就可以看到Emulator的所有需要的source code了.它并不会包含生成img所需的代码.
2.分析源代码目录的组织.
重点在分析这几个脚本文件.因为主要的错误也就是出在这上面.
$ cd $YourPath/qemu
$ vim android-configure.sh    
$ vim android-rebuild.sh
$ cd $YourPath/qemu/distrib
$ vim build-emulator.sh
不难发现build-emulator.sh首先会编译SDL,再编译qemu.而实际调用的是android-configure.sh来完成qemu的编译.
android-rebuild.sh也实际是调用android-configure.sh来完成重新build的过程.
$ cat -n build-emulator.sh
$  29 cd $CURDIR/sdl
$ 30 if ! (ANDROID_QEMU_PATH=$CURDIR/qemu ./android-configure.sh --prefix=$LOCAL && make && make install); then
$ 31 echo "ERROR: could not build SDL library, please check their sources"
$ 32 fi
$ 33
$ 34 cd $CURDIR/qemu
$ 35 if ! (./android-rebuild.sh --sdl-config=$LOCAL/bin/sdl-config); then
$ 36 echo "ERROR: could not build the emulator, please check the sources"
$ 37 fi
$ cat -n android-rebuild.sh
$ 9 cd `dirname $0`
$ 10 ./android-configure.sh $* &&
$ 11 make clean &&
$ 12 make -j4 &&
$ 13 echo "Done. !!"
好了,由于.我没有SDL-dev环境的,所以我决定采用这样的方式.
先编译SDL再编译Emulator.稍微有些郁闷的过程出现了.
先cd到SDL1.2.12目录下,
$ ./android-configure.sh   --> okay
$ make                     --> error
出现如下错误:

Error Messages:

Missing X11/ files

In file included from main.c:20:
tkconfig.h:54:22: error: X11/Xlib.h: No such file or directory
tkconfig.h:55:28: error: X11/cursorfont.h: No such file or directory
tkconfig.h:59:27: error: X11/Xresource.h: No such file or directory
tkconfig.h:60:23: error: X11/Xutil.h: No such file or directory
In file included from main.c:21:
tkint.h:25:25: error: X11/Xlibint.h: No such file or directory

Install libx11-dev:

$ sudo apt-get install libx11-deV

Missing XShm.h

In file included from sim.c:62:
headers/sim.h:133:33: error: X11/extensions/XShm.h: No such file or directory
In file included from headers/sim.h:148,
from sim.c:62:
headers/view.h:182: error: expected specifier-qualifier-list before ‘XShmSegmentInfo’

Install x11proto-xext-dev:

$ sudo apt-get install x11proto-xext-dev
错误不仅是这些,但原因是一致的,缺少deb包.
$ sudo apt-get install libesd0-dev && sudo apt-get install libasound2-dev
okay,补完这些包.总算是可以继续编译拉.正确的话会生成了两个文件:libSDL.a和libSDLMain.a
实际上,在Android source code 的Prebuilt里面有SDL static library,所以也可以不编译.
第二步:开始编译emulator.
结果又出错了.
 "Please ensure that you have the emulator's patched libSDL"
 "built somewhere and point to its sdl-config script either"
 "with the SDL_CONFIG env. variable, or the --sdl-config=<script>"
 "option."
原来要配置--sdl-config哦.参考INSTALL文件,写上刚刚编译完成的路径bin/sdl-config.sh
再次运行还是报错.引起我注意的是这么一句话:
SDL-probe  : SDL_CFLAGS =
SDL-probe  : SDL_LIBS   =
编译的参数竟然为空??没办法从sdl-config.sh读到LIB路径以及链接参数.
我干脆直接硬写上去好了.如下:
# check that we can link statically with the library.
#
SDL_CFLAGS=`$SDL_CONFIG --cflags`
SDL_LIBS_PATH='/home/allen/mydroid/prebuilt/linux-x86/sdl/lib'
SDL_LIBS="$SDL_LIBS_PATH/libSDLmain.a $SDL_LIBS_PATH/libSDL.a -lm -ldl -lpthread -lrt"

# quick hack, remove the -D_GNU_SOURCE=1 of some SDL Cflags
# since they break recent Mingw releases
再次编译,okay,过了.生成emulator,放到SDK/tools/目录下,运行没问题.

  评论这张
 
阅读(2946)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017