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

编程学习

我的网上家园

 
 
 

日志

 
 

编译 FCEU-0.98.28 的曲折过程  

2013-04-27 11:39:20|  分类: 学习应用 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
FCEU 是一个摸拟器,比较古老了吧.其实我对他没研究.
有个网友跟我提到MINGW编译fceu过程中报错,出于好奇心,也想试一下,按照源码中的教程,折腾了一整天,也没成功.一整天都在下载与配置所需的编译环境.一直到最后开始编译,出现报错,而无从下手.

我对MINGW也没研究,只是在学习C时用GCC编译几个非常简单的,类似hello,world!这样的小程序.

编译FCEU需要很多东西,需要MSYS,这个都没有接触过. 从MINGW的官网下载了WIN下的EXE程序,选择了所有的项目,让它自动下载安装.

不管怎么样,最终还是失败的.

最后,在一个QQ群里,有个热心网友给了一个网址,是一个MSYS的项目.
刚开始也没成功,经过几次放弃,几次尝试,终于成功了.
以下是配置过程.
下载MSYS:
解压缩包,我是解压到了C盘.

双击BAT,打开MSYS
然后mpkg --info 可以显示当前的包.
要安装几个必要的包,我安装了以下的包:
mpkg --install zlib
mpkg --install SDL
mpkg --install lua
mpkg --install ssh ;我不知道这个是不是有用.
安装包以后,需要退出MSYS,重新进入一次才可以.
在编译的过程中再次报错,看提示好像是显示模式有关,因为这个MSYS环境自带的是DX9,而FCEU的源码要求DX 7,也许是因为这个原因.
把下载的DX 7的压缩包解开,然后把include与lib目录覆盖msys\mingw 下面的目录,就是把相关文件拷到相应目录.
再次编译时,又报缺少 lua51.dll 在MSYS的群里问了一下.
下载单独的 lua-5.1.tar.gz 解压以后 make mingw 进行安装,安装以后,退出,重新进入MSYS.

还要把 lua51.dll 拷贝到 fceu 的src 目录去.

再次编译以后成功了.


Configure the Makefile
  ./configure --with-nativewin32
or for opengl
  ./configure --with-nativewin32 --with-opengl
Build the resource file
  windres -o src/res.o src/drivers/win/res.res
Now make
  make


还有一点: 暂时没有搞清楚,FCEU自带的源码,需要通过 autogen.sh 来生成 configure 但是单独下的MSYS项目执行报错,缺少程序.
我是在原来的MINGW的环境下生成又拷贝过来的.
经过几次调试,终于找到原因. 后面的这个编译环境缺少几个支持.需要下面的几个开发包支持:

autoconf : http://sourceforge.net/projects/mingw/files/MSYS/msysdev/autoconf/
perl: http://sourceforge.net/projects/mingw/files/MSYS/Extension/perl/
m4: http://sourceforge.net/projects/mingw/files/MSYS/Extension/m4/

注意: 下载的时候要下载BIN包,而不是SRC包. 下载以后,解压直接覆盖到BIN 与LIB目录.[注意,覆盖到msys的BIN与LIB目录]




报错信息与解决:
如果缺少DX 7的库,会报以下错误:
--------------------------------------------------------------------------------------------------------------------
In file included from drivers/win/main.c:283:
drivers/win/video.c: In function 'SetVideoMode':
drivers/win/video.c:399: error: 'DDSURFACEDESC2' had no member named 'dwBackBufferCount'
drivers/win/main.c: In function 'main':
drivers/win/main.c:385: waring: passing argument 1 of 'FCEUI_LoadMovie' discards qualifiers from pointer target type
----------------------------------------------------------------------------------------------------------------------------------------------------
下载dx70_mgw.zip,解压,复制到对应目录即可解决.[复制到 mingw/bin mingw/include ]
在make 过程中报以上错误,复制DX70的库以后,可以继续make 

缺少lua51.dll 会报以下错误:
--------------------------------------------------------------------------------------------------------
gcc.exe: lua51.dll: No such file or directory
make[1]: *** [fceu.exe] Error 1
make[1]: Leaving directory '/home/Administrator/fceu-0.98.28/fceu-0.98.28/src'
make: ***[all-recursive] Error 1
---------------------------------------------------------------------------------------------------------
直接复制 lua51.dll 到 fceu的src目录即可解决.

下面是相关资源包:
http://pan.baidu.com/share/link?shareid=475949&uk=3138112328
在百度网盘里面.
里面的MSYS已经安装了需要的包. 但没有集成DX 7的库,DX 7的库也在网盘里面.
里面也有FCEU的源代码. 其中 configure 已经生成了.
LUA51.DLL 在MSYS的包中也有,解压开以后,可以搜索一下,就能找到了.
  评论这张
 
阅读(30)| 评论(0)
推荐 转载

历史上的今天

评论

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

页脚

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