惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
S
Security Affairs
阮一峰的网络日志
阮一峰的网络日志
L
LangChain Blog
Microsoft Azure Blog
Microsoft Azure Blog
雷峰网
雷峰网
Recent Announcements
Recent Announcements
WordPress大学
WordPress大学
The GitHub Blog
The GitHub Blog
博客园_首页
The Cloudflare Blog
M
MIT News - Artificial intelligence
博客园 - 【当耐特】
MyScale Blog
MyScale Blog
S
SegmentFault 最新的问题
P
Proofpoint News Feed
Y
Y Combinator Blog
Jina AI
Jina AI
博客园 - 聂微东
A
About on SuperTechFans
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
G
Google Developers Blog
云风的 BLOG
云风的 BLOG
F
Full Disclosure
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
T
Tailwind CSS Blog
J
Java Code Geeks
Vercel News
Vercel News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
小众软件
小众软件
酷 壳 – CoolShell
酷 壳 – CoolShell
T
The Blog of Author Tim Ferriss
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 三生石上(FineUI控件)
W
WeLiveSecurity
PCI Perspectives
PCI Perspectives
Attack and Defense Labs
Attack and Defense Labs
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
宝玉的分享
宝玉的分享
IT之家
IT之家
Hacker News: Ask HN
Hacker News: Ask HN
The Register - Security
The Register - Security
T
The Exploit Database - CXSecurity.com
T
Threat Research - Cisco Blogs

博客园 - 海沙

[转贴]制作ubuntu的安装u盘 ubuntu7.04 安装ELDK4.1交叉编译环境 光圈和快门 烧友必读《音响二十要》转台湾音响大师刘汉盛毕生精华 [参考]查看ORACLE DB信息的一些SQL [参考]利用iptables防火墙保护Oracle数据库 [参考]RedHat AS3下自动启动和关闭oracle的脚本 [参考] 在单机上创建物理的 Oracle9i standby 数据库笔记 [参考]Oracle10G Physical Standby Database笔记 [参考]Oracle9i (9.2.0.4.0) Installation on RedHat Advanced Server 4.1 And Centos 4.1 [转载]Install Oracle 9.2.0.6 On RedHat AS 3.0 [参考]FreeBSD5.4+GNOME2.10.0安装过程 资料连接记录 Linux Add SMB(windows) Printer Notes On RHAS2.1 DiabloII 1.10 教育文章-合成与符文之语(不断补充中....) [參考]Oracle9i (9.2.0.4.0) Installation on RedHat Advanced Server 2.1 Linux [參考]Oracle Application Release 11i (11.5.9) on RedHat Advance Server 2.1 [参考]RedHat高级服务器版2.1的安装、Oracle9iR2的安装 [参考]用Oracle导入导出工具实现Oracle数据库移植
Android之旅-Emulator WinXP下的编译
海沙 · 2008-01-20 · via 博客园 - 海沙

Google的开发手机平台Android的发布,可能将改变目前手机开发的模式,提供更多机会给个人,在朋友的鼓动下,决定学习之.
这里要简单描述下Android SDK的基本结构,如图

提供给用户的编程语言是Java,是朋友的强项(这个留给他吧),我只对lib和linux有点兴趣(呵呵,开源的东西学起来才有劲)
从google的android网站dowload最新的sdk(提供给java开发使用的),看了一下,基本是传统的模拟器开发模式(传统是传统,提供这个
还是很方便的),那么我们首先从模拟器emulator开始吧。
1、下载模拟器的源代码:
http://code.google.com/p/android/downloads/list
目前最新的版本是:android-emulator-m3-rc37.tar.bz2
在linux平台下解压,目录结构很简单,一个sdl(知道是什么不?)目录,一个qemu(居然是它!)目录,编译脚本build-emulator.sh,README文件。
在linux下编译很容易,就不说了,只是目前我使用的是windowsxp(想不用都不行,ubuntu还不支持我的声卡。。。),但是找遍了所有的网站,都没有介绍怎么在windows下编译模拟器的文章(汗。。。)
没办法,从头开始,先搞清楚里面是什么东西,step by step
SDL--在baidu上搜索了下,文章挺多的,不多说了,是一个跨平台的库,主要提供做linux上的game开发的,叫Simple DirectMedia Layer,想来估计是DirectX之类的,关键是能跨平台(也是为啥qemu要用它的原因了吧)。
QEMU--不多说了,上网搜索吧,一个超强的模拟器(同样跨平台)。说来google真是爽,那么多开源的东西给它用,它自己居然不开发更多的源文件,批评一下。
在Win32上编译SDL和QEMU的文章倒是一堆一堆的,基本上都不用Cygwin,而是使用MinGW,我看了下sdk下的dll文件,有一个mgwz.dll,很眼熟啊,事实也证明偶是对的,google提供的sdk中的emulator也是在mingw上编译的(真迟钝。。。)
开始吧,先把MinGW安装好
1、到http://www.mingw.org下载MinGW-5.1.3.exe以及MSYS-1.0.11.exe,安装好MinGW的环境,强烈建议不要网络安装,那叫一个慢,直接从mingw的网站上下载需要的文件,至于要安装哪些,看看MinGW-5.1.3.exe执行中解开的那个.ini就可以了。
重点说明:必须安装gcc 3.4.5以上的,我最早安装的是3.4.2,编译怎么也过不了,两个夜晚浪费在这个地方了(哭。。。。。)
MSYS是在Win32上的一个unix shell环境,好象执行速度比cygwin要慢。
安装过程不赘述,网上太多介绍了。
最后是要下载两个msys的工具下来,一个bash的最新版,一个是make的最新版,我下的是
make-3.81-MSYS-1.0.11-1.tar.bz2
bash-3.1-MSYS-1.0.11-1.tar.bz2
如果编译出现问题,最好连一个zlib的最新版也下一个吧。又是两个夜晚的血的教训,在win32上用linux的东西就是自己找罪受。。。

2、将emulator的源代码解压到/home/Administrator下,执行./build-emulator.sh,成功。(失败20次后。。。)

编译过程顺利的话,会生成一个local文件夹,这里是放SDL生成库的地方,编译qemu的时候需要使用它,主要是bin/sdl-config文件,提供libs和include文件的路径和版本信息。
sdl的版本是1.2.12,qemu的版本是0.8.2

3、因为我试过直接编译qemu的最新版,发现google改过了qemu的东西,核心没变,新增了一些硬件支持和增加了一些调试用的参数,具体的东西可以去读代码
android_sdl.c,这个是emulator的主函数文件。

4、模拟器编译成功后,直接运行提示没有system.img,这个到sdk的tools/lib/images下面拷贝kernel-qemu,system.img,ramdisk.img,userdata.img到emulator.exe的当前目录就可以了,把console和verbose都开起来,打印了很多启动信息,可以了解一下模拟的硬件配置,居然是ARM9的u,难怪qemu的target是arm-softmmu呢。

到这里,emulator的概貌搞清楚了,x86 code的emu,arm code的kernel和vm,java code的api接口,真够杂的。Bill最近说,不能惧怕复杂。恩,下一步继续探索kernel的世界。