注册 登录
琵琶行论坛 返回首页

robot的个人空间 https://www.ppxclub.com/?104200 [收藏] [复制] [分享] [RSS]

日志

模擬器學習日記 (6) - 用MinGW 下,編譯 MAME 及 MAME 更新

热度 5已有 1570 次阅读2010-2-17 18:08 |个人分类:模擬器研究|

首先从简单的开始,编译正式版的 MAME,目前的版本 0.136,从 MAME 官网下载原始码。
假设你下载的档案存在 c:\temp\mame0136s.exe 用下面的命令,安装 source code 到 /home 下,且:
 cd /home
 mkdir mame0136
 cd mame0136
 mv /c/temp/mame0136s.exe .
 ./mame0136s.exe

然后会出现原始档安装路径的视窗,选 Extract。习惯上为每一个版本的 MAME 建一个目录。


最后执行命令,将 mame0136s.exe 移出,这个已经不需需要了。
 rm ./mame0136s.exe 

工作目录下,内容会像这样。

好戏上场了,这是侯我们可以来编译 MAME。执行下面的命令:
make 
然后你应该就会看到像下面的画面,MAME 是个大专案,所以编译要好一会。

编译完成后,工作目录下,会有这些档案:

接着,我们想跟目前开发中的 MAME 同步。MAME 官方,在这个网址,以 diff 的形式发布程式更新。

什么是 diff?听起来很神气。diff 就是用工具软体,将两个版本间,有差异的部份,用大家讲好的格式,存下来。用 diff 的好处是,只要存两个版本不同的那些行(包括新增、修改、删除),所以档案非常小。大家可以看到,MAME 原始档,压缩后还有快 15 MB,可是不同版本中的差异,只有几百 KB。

下载 0136u1_diff.zip,0136u2_diff.zip,0136u3_diff.zip,然后用 patch 命令,来 更新 MAME 的原始码。  
patch -p0 -E <diffname.diff

关于 patch 的参数的一些说明,执行命令 patch --help | less 会出现下面的画面,参数很多,不过我们关心的是 -p0-E,这两个参数,意思说,不要跳过任何一层的目录,如果 patch 之后,内容是空的,就移除这个档案。

如果你的目录结构,跟 MAME 官方一样(当然是,从官方下载的不是吗?),就依样画葫芦了。假设你下载的档案都是存在 c:\temp\0136u1_diff.zip, c:\temp\0136u2_diff.zip, c:\temp\0136u3_diff.zip,执行下面的命令,来安装这三个 diff 档。

cd /home/mame0136
mv /c/tem/0136u1_diff.zip  .
mv /c/tem/0136u2_diff.zip  .
mv /c/tem/0136u3_diff.zip  .

现在遇到问题了,没有工具解开 zip 档,Linux 是用 unzip,用 Google 找了别人编译好的的 MinGW 的 unzip.exe:

假设你已经有 c:\temp\unzip.exe 接下来就要来安装 MAME 的 diff 了,顺序很重要。用以下的命令来安装:
cp /c/temp/unzip.exe  /bin/unzip.exe
cd /home/mame0136
unzip 01036u1_diff.zip
unzip 01036u2_diff.zip
unzip 01036u3_diff.zip

解出 0136u1.diff, 0136u2.diff, 0136u3.diff 三个档,然后执行 patch 命令如下:
 patch -p0 -E < 0136u1.diff
 patch -p0 -E < 0136u2.diff
 patch -p0 -E < 0136u3.diff

你会看到每个 diff 都修改很多档案,所以 patch 也要跑一下子。patch 成功后,可以把 diff 档,都删除。
rm  *.diff   -f
rm 0136u*  -f

然后我们重新编译 MAME,命令如下:
make clean
make 

今天因为摸索如何解决 unzip 的问题耽误了不少时间,不过最后还是把 MAME 更新到 0.106u3。下次来编译 MAME plus。

评论 (0 个评论)

小黑屋|手机版|Archiver|琵琶行论坛 ( 赣ICP备12000882号 )

GMT+8, 2019-11-21 08:58 , Processed in 0.017543 second(s), 6 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

返回顶部