Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10730969
  • 博文数量: 2905
  • 博客积分: 20098
  • 博客等级: 上将
  • 技术积分: 36298
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-23 05:00
文章存档

2012年(1)

2011年(3)

2009年(2901)

分类: LINUX

2009-03-23 11:14:14

Wine全名(Wine Is Not a Emulator,Wine不仅仅是一个模拟器)
准备:首先Linux系统里要GCC编译器,没有GCC下面的工作无法进行。虽然网上有各个发行版本的wine RPM安装包,但是还是建议自己编译,不然有很多模windows的库文件将会不能调用,wine的功能等于减半。经常有人说为什么别人模拟到的软件为什么自己模拟不到,很多时候就是因为这个原因做成的。
卸载wine:
如果先前安装过wine,那么在安装新版wine前必须拆卸原先的wine。检验方法:$ wine --version,如果显示了wine版本号,那么系统就存要wine。卸载方法:rpm -e wine,如果原先是源码安装的,进入原编wine的目录,执行make unistall就O了。
然后要下载wine(非RPM包):
我用的是wine0.9.10,下载wine-0.9.10.tar.bz2。有两种方法编译wine。
方法一(简单,推荐),用wineinstall安装:用普通用户登录,解压wine-0.9.10.tar.bz2,解压后的目录就是原码安装包,进入该目录。运行:./tools/wineinstall按提示回答就可以了。
实际操作:
用普通用户登录,将tar包复制到/home/当前user目录下(我的是gener)
cd /home/gener
tar jxvf wine-0.9.10.tar.bz2
cd wine-0.9.10
./tools/wineinstall
之后它会运行./configure,然后显示:We need to install wine as root user, do you want us to build wine,'su root' and install Wine?  Enter 'no' to continue without installing(yes/no)
yes 回车
如果在此处出现错误,请检查此命令的输出,如果他没有找到一些需要的包,而你又希望使用那个包提供的功能时,请安装相应的 devel 包。
如果你root用户设置了密码,还会提示你输入密码。
待屏幕上出现:
Installation complete for now. Good luck (this is still alpha software).
If you have problems with WINE, please read the documentation first,
as many kinds of potential problems are explained there.
则表示安装成功了。
方法二:
以root用户登入。进入wine源码安装包的目录,依次执行
./configure
make depend
make
make install
实际操作:
以root登录,将wine-0.9.10.tar.bz2复制到/root/目录下面。
打开终端,运行:
cd /root
tar jxvf wine-0.9.10.tar.bz2
cd wine-0.9.10
./configure --prefix=/usr/local/wine
如果在此处出现错误,请检查此命令的输出,如果他没有找到一些需要的包,而你又希望使用那个包提供的功能时,请安装相应的 devel 包.
make depend && make && make install
wine
至此,wine安装成功。
 
附带一些笔记:
(1)wine运行程序的两种方式
   wine可以用两种不同的度式运行应用程序:作为预编译的windows二进制程序,或者作为本地编译X11(X Windows系统)应用程序。前者使用模拟把一个windows应用程序连接到wine库上。通过wine安装或是简单的把windows程序复制到Linux系统下,就可以直接用模拟器运行windows程序。后者运wine运行windows程序必须有这个应用程序的源代码。不用本地windows编译它,象对其它UNIX应用程序所做的一样,要用本地Linux编译它-例如gcc-并连接上Wine库。这些本地连接的应用程序被称为Winelib应用程序。wine应用的重点要前种使用方式。
(2)windows程序的三个方面
   ·注册表——windows中重要的数据库,作用大,不用说;
   ·目录结构——就用程序期望在指定的预先决定的位置找到或安装东西,期望这些目录存在。由于与UNIX目录结构不同,并且多数这些位置是硬编(hardcode),然后通过Windows API和注册表来查找。在Wine安装上这是必需注意的一个方面;
   ·系统DLL——在windows中它们通常驻留在system(或system32)目录中。一些windows应用程序运行时需要装载这些DLL,会尝试到上述目录中去查找并装载。当应用程序要求一个DLL而Wine不能装载它们自己的内部DLL(.so文件)时,Wine不模拟不存在的文件(舍弃模拟);
    注:wine安装两种方法,一是用wine小组制作的自动Wine安装脚本tool/wineinstall,它可以做我们认为必要的所有事情。另外一种是常规的编译安装方式,除非用户很清楚正在做什么,否则不推荐运行常规的configure&&make depend&&make install方式。此时,建议用户可以使用tools/wineinstall来建立一个配置文件、安装注册表、并建立自己的目录结构。
(3)系统DLL的解决方案
   ·对于那些在运行中只需检查文件是否存在来确定调用的程序。Wine的解决方法是建立伪DLL文件来模拟真实DLL文件使程序运行起来。如果存在这样的问题,可以在system目录中建立一个空文件来让应用程序认为它存在,而在实质调用时wine装载它的内置DLL替代。(wine原文手册写道:可惜wineinstll工具不具有建立这种空文件的功能);
   ·而有些DLL文件,应用程序不仅要查询其是否存在(如DirectX版本),而且还要从原资源文件中查询资源的版本。这样空文件不起作用,因此必须有完整版本资源的安装文件。wine当前正处理这个问题。因此,目前要解决这些问题仍需要真实的DLL文件。
   ·对于另外一些wine目前未很好实现(或根本未实现)的DLL,如果不拥有一个真实的windows,则有的人会找到所需的DLL。
阅读(2164) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~