如何在Linux中运行Win32下的软件?

听说现在Linux对windows下的软件是完全兼容的,
请问真的可以不用虚拟机装windows就可以直接从linux中安装win32平台的软件吗?
寻求具体操作,谢谢大家!

使用wine可以达到您要的效果,但不是100%成功,个别的软件会报dll错误。
以下是详细使用方法:
在安装前请确保你的系统中装有 gcc 3.x (推荐使用 3.2.x ),很多读者反映在 gcc 2.9.x 上编译存在问题。

wine 的安装配置
wine 的最新版本是 20030408 , 下面将介绍如何安装配置 wine。

1. 下载 wine 并解压缩:
请到 wine 的官方网站下载最新的 tarball 压缩文件包。或者,如果不想手工打中文输入法的补丁的话,可以直接下载打好补丁的 wine-20030408。(如果你是下载的这个已经打过补丁的,就可以跳过下一步) 这个版本的文件名为 Wine-20030408.tar.gz

tar xvfz Wine-20030408.tar.gz

现在你可以在当前目录中看到一个名为 wine-20030408 的目录。以下假设你将 wine 解压缩到 ~/wine-20030408下,即你在你的home下,运行上述命令。
2. 下载并应用中文输入法补丁:
如果你的手头上已经有一个现成的官方版本的 wine-20030408,那么你可以下载wine中文输入法补丁(包括中文复制、粘贴的支持),并将其存到 ~/wine- 目录下。
应用之:

cd ~/wine-20030408
patch -p1 < xim_copyparse_0417.diff

注:这个patch也可以使用在最新的(20030410)CVS上。
3. 编译安装 wine :

cd wine-20030408
./configure --prefix=/usr/local/wine

注意:强烈建议指定安装目录,此处为 /usr/local/wine,这样后面会方便很多。
请检查此命令的输出,如果他没有找到一些需要的包,而你又希望使用那个包提供的功能时,请安装相应的 devel 包(mandrake 下的命名方法)。
一切正常后,编译并以root 身份安装

make depend && make && make install

4. 配置 wine:
在用户的HOME中建立目录和配置文件

cd
mkdir .wine
cp wine-20030408/documentation/samples/config .wine/

使用您习惯的文本编辑器,修改.wine/config 使其反应您的系统状态。打开 config 后,主要修改最前面的定义驱动器的部分。首先,删除对Drive A 的设定的一行:([Drive A]的最后一行)

"Device" = "/dev/fd0"

然后请根据你的机器的情况,修改剩余的驱动器。下面给出我的一部分

[Drive C]
"Path" = "/backup/c_drive"
"Type" = "hd"
"Label" = "Dos Drive"
"Filesystem" = "win95"

[Drive D]
"Path" = "/mnt/d/"
"Type" = "hd"
"Label" = "My Home"
"Filesystem" = "win95"

建议:不要将 c: 指向一个存在的真实 windows 盘,而是自己建立一个 “假”的,比如,你想在 /backup/c_drive 下建立一个虚拟 windows 的 c 盘,则执行如下命令(执行以下命令一般需要root 权限)

mkdir /backup/c_drive
cd /backup/c_drive
mkdir -p windows windows/Start\ Menu \
windows/Start\ Menu/Programs windows/Fonts windows/system32 windows/Desktop
ln -s /windows/system32 windows/system

为了可以运行不论处于你linux 任何目录下的程序,建议添加一个盘,如下(盘符是你现有的下一个就可以了)

[Drive G]
"Path" = "/"
"Type" = "hd"
"Label" = "root"
"Filesystem" = "win95"

别的基本不需要修改,默认值就可以了。如果你的硬盘上有 NTFS 格式的分区,请参阅 常见问题。
注意:请根据你的系统来配置以上的目录,否则将无法启动运行wine。
5. 配置共享库目录:
由于我们自己指定了安装目录,所以共享库不位于系统已知的目录中,为了告诉系统到哪里找,可以修改 /etc/ld.so.conf 文件,但是,一个更好的方案是使用 shell 的环境变量:LD_LIBRARY_PATH。 在一个 console 中,执行命令

export LD_LIBRARY_PATH="/usr/local/wine/lib"

现在在这个 console 中,你可以继续下一步了。(是不是觉得太麻烦了,每次要执行一个 windows 程序就要这样做,不用担心,后面提供一个脚本,自动完成这些工作)
6. 复制字体:
复制几个字体到 windows/Fonts 下,推荐至少将 simsun.ttf 复制/连接到这个目录下(不可一个字体都没有,否则会造成 X 自动退出)。
7. 测试你的 wine:
在命令行输入 /usr/local/wine/bin/wine notepad ,如果成功看到了 记事本 程序,则说明 wine 已经可以正常工作了,试试中文输入,中文的复制和粘贴(目前仅支持wine 与 KDE 程序间中文的复制和粘贴,不支持gtk/gnome的程序);如果出现错误信息,请根据提示检查上面的各步。如果你得到的错误信息类似于找不到 libnt.dll.so 或者 version.dll 之类的,那么你应该是忘记了做 步骤4;如果发生如下的错误:

spider c $ wine notepad
Invalid path L"e:\\" for L"temp" directory: does not exist.
Perhaps you have not properly edited or created your Wine configuration file,
which is (supposed to be) '/home/spider/.wine/config'.
/usr/local/wine/bin/wine -all notepad

说明你的[wine]下的 "Temp" 属性指向了一个不存在的目录,将其改为指向 /tmp 就可以了:如第4步,你将G 指向 /,则这样设置:"Temp" = "G:\\tmp"

优化我们的 wine
现在,wine 可以正常使用了,但是,还是太麻烦了,所以,我们来进行一些小小改进。同时,为了正常运行 xdict,我们也要作些 关键性 的调整。

1. 下载 wine 工具包,其中有一个名为 wine 的文件,他的工作就是自动设定 LD_LIBRARY_PATH 目录。如果你的安装目录不同于我的,那么请修改之。将其保存到 /usr/bin 下,并使其可以执行

chmod +x /usr/bin/wine

2. 安装支持文件 dcom98:为了在 linux 下安装使用 installshield 做的 setup,必须要装这个东东,请在微软 下载,并使用 wine dcom98.exe 来安装。如果在复制完文件后报告错误:A newer version of DCOM95 or DCOM98 has been installed... , 那么请先做下一步。
3. 可以在本站下载 常用的 win98 DLL包,并将其解压到你的虚拟C盘下的 windows/system32 下面。
4. 可以修改 windows 的默认用户和默认的用户组织:打开 ~/.wine/system.reg 中的RegisteredOrganization 和 RegisteredOwner 就可以了。

wine 的自带工具以及使用技巧
本部份简要介绍几个 wine 自带的工具及其功用(仅介绍比较常用的):

1. uninstaller: 反安装已经安装的程序
在 console 中输入: wine uninstaller,然后你就知道了
2. progman: 程序管理器
wine progman, 我觉得这个工具类似于 windows 的任务条。
3. regedit: 维护注册表
wine regedit: 与windows的 regedit 在功能和命令行参数上完全一样,不同仅仅是这个没有 GUI 界面。使用这个工具可以安全的向注册表中导入信息。如果你想用 wine 来玩 starcraft 或 diable II ,又想上战网的话,那么可以用它来导入注册表文件。
4. winecfg: 图形配置工具
wine winecfg: 可以使用这个工具来对 wine 进行一些基本的配置。功能比较有限,聊胜于无吧。
5. winefile: 资源管理器
wine winefile: windows 下的资源管理器,想必是使用windows 的用户最常使用的软件吧,这个就是那个的一个功能子集。
6. winemine: windows 扫雷
wine winemine: 对,就是 windows 下的扫雷,在穷极无聊时的一种解决方案
7. regsvr32: 自动注册动态连接库
wine regsvr32: 某些软件安装时,出于某些原因可能要自己使用这个来注册几个DLL文件。

常见问题:
1.无法输入中文?
答:我的结论是,在 gbk 或 gb2312 时可以输入中文,但是在 gb18030 下不行。请改变 locale 为 GBK 试一下。
2.退出wine时,出现如下错误:
Unhandled exception: privileged instruction in 32-bit code (0x414f56a8).
In 32-bit mode.
0x414f56a8 (_end+0x406e0c in libGLcore.so.1): movl %gs:0x0,%eax
答:试试将 glx 从 XF86Config 配置文件中注释掉。
3. 发生类似如下的错误: err:module:import_dll Module (file) COMCTL32.dll (which is needed by J:\Setup.exe) not found,怎么解决?
答:这类错误是由于在 c:\windows\system32 (system) 目录下找不到某个需要的 native 的 DLL 文件造成的(此例是 COMCTL32.dll )。解决方法是从一个真正的 windows 安装盘下的相应目录copy 过来一个。
4. 如果一个分区是 NTFS 的,安装的是 win2000/winxp,应如何设置 wine 的driver 部分?
答:不建议使用任何 NTFS 分区上的文件,因为linux 内核对 NTFS 的支持,仅限于读,而如果要写入的话,是很危险的(所以默认的 mount 是只读的)。因此,请使用 fat32 分区或任何 linux 格式的分区。
5. 编译时发生错误?
答:首先请确保你的系统中装有 gcc 3.x (推荐使用 3.2.x );wine 在 GNU/Linux 主流发行版的较新版本中以及 基于源代码的发行版中编译不成问题,但是在 FreeBSD 下好像不可以。
6. 在运行程序时总是得到类似如下的错误提示:
wine: chdir to /tmp/.wine-root/server-305-242e2 : No such file or directory
答:这是因为你用root 用户运行wine 的问题。解决方案如下:退出 X,删除 /tmp 下所有东东,然后用普通用户运行wine。我的建议是,平时也不要使用 root ,使用一个普通用户既安全又可以避免很多不必要的麻烦。另一个解决方案 (出处) 是在编译的时候指定参数:

./configure --with nptl --with-x --prefix=/usr/local/wine

后面的步骤与前述过程相同。
7. 某某程序是否可以使用wine来运行?
答:关于某个英文软件是否可以在 wine 下正常(或基本正常)的运行,大家可以到 winehq 看看,如果找不到你关心的程序,可以到应用程序资料库搜索一下,看看其他用户的 comments,就知道是否有人运行成功了。
测试通过的输入法
尽管理论上,所有的输入法都应该没问题,但我认为这个部分可以让你知道你喜爱用的输入法是否已确认被支持。
以下是我测试过的输入法:(括号中为测试过的版本)

* xsim (0.3.9.4)
* chinput
* erb-fcitx (1.8.x)
* scim (0.4.0,0.3.1)

minichinput 是由 chinput 修改而成, fcitx 是 erb-fcitx 的基础,所以我觉得这2个输入法也应该 没有问题。
现在的这个补丁已经不需要修改任何输入法,就可以正确的使用退格等键了,并且修正了在QQ中使用时,会crash的问题,请大家试用。如果先前你下载了 旧补丁, 你可以先取消掉(patch 的 -R 参数)那个补丁,再应用这个新的就可以了。
如果您有好的建议和、或修改意见,请不吝赐教:)
如果你成功的安装上了,也请麻烦通知我一声,如果可能的话,我也希望你能告诉我你的运行环境:发行版及其版本号,KDE的版本,gcc的以及你所使用的输入法的名称和版本,多谢。
注:
以上在 mandrake 9.0, kde 3.0.3,gcc3.2
gentoo 1.4rc_2, kde 3.1.0, gcc 3.2
gentoo 1.4rc_3, kde 3.1.1, gcc 3.2.1
下测试通过。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-07-02

Linux和win下的系统环境不一致,如果一定要运行,必须借助一些虚拟win环境的软件,才可以。目前流行的是wine,以及一些由 wine 变种程序如 PlayOnLinux 、Q4Wine、Wine-Doors 等。主要是有wine就行了,变种程序只是更方便一点。

主要步骤:

    首先要有桌面图形界面(Gnome/KDE/XFCE等不限,主要是有X11环境);

    安装wine(红帽/debain/suse三大Linux系列及其衍生版本都可以用自带更新软件安装),因为会安装一些依赖包,最好是原生的更新软件如yum(redhat/centos/fedora等)/apt-get(Debain/Ubuntu/kali等)/ports(FreeBSD)等安装。

    运行wine的配置config。它会关联exe文件。

    执行32位exe文件。

需要注意的是,老版本的wine支持32位程序会好些,64位程序支持还不是很好。

第2个回答  2006-04-26
很明确的告诉你
这个是不可能的

郁闷啊
我查了3天资料才知道的啊

教程:使你的 ARM Linux系统(Aarch64)兼容Win32软件(通过Wine i386)(1...
在Debian上,首先,你需要安装我提供的VM-wine,一个包含老版本Wine(3.0)的工具,之后可以考虑升级到较新版本。只需通过dpkg命令安装即可运行exe软件。然而,如果你对3.0版本满意,可以跳过后续步骤。第二步,推荐安装最新且静态编译的qemu-user,并配置binfmt支持。在Debian的unstable分支中,执行相应命...

如何在Linux中运行Win32下的软件?
2. 安装支持文件 dcom98:为了在 linux 下安装使用 installshield 做的 setup,必须要装这个东东,请在微软 下载,并使用 wine dcom98.exe 来安装。如果在复制完文件后报告错误:A newer version of DCOM95 or DCOM98 has been installed... , 那么请先做下一步。 3. 可以在本站下载 常用的 win98 DLL包,并...

在Linux上如何运行 Windows应用程序 (1)
Wine 程序加载器让运行于 x86 上的 Linux 和其他类 Unix 操作系统可以加载并运行 Windows x86 可执行文件 -- 不过那只是它要解决的问题的一部分。因为 Windows 可执行文件总是会链接到其他库,而这些库是 Windows 操作系统的一部分(如本文稍后图 1 中的 Dependency Walker 截图中可以看到),Wine ...

如何借助CrossOver在Linux上运行Windows程序
使用命令行与大部分 Linux 中的应用程序一样,Wine 必须在命令行中安装。用户必须回到命令行中来在 Wine 下运行应用程序。例如,要运行Internet Explorer,用户通常需要在 shell 中输入 wine IEXPLORE.EXE 。尽管经验丰富的用户喜欢这样做,但初学者会发现这比较困难,而且不太可能懂得起别名等快捷方式。

如何解决win32应用无法在64位系统运行呢?
1. **使用兼容性模式**:右击不兼容的软件图标,选择“属性”,然后在弹出的窗口中点击“兼容性”选项卡。勾选“以兼容性模式运行这个程序”,并选择一个合适的系统版本,如Windows XP或Windows 7。同时,可以勾选“以管理员身份运行此程序”,以增强软件的兼容性。2. **更新驱动程序**:有时硬件...

Win32应用程序如何在Windows 10X的容器中运行以确保兼容性?
微软官方确认:Win32应用如何在Windows 10X上运行详解微软Windows 10X操作系统在关注UWP和Web应用程序的同时,对Win32应用的兼容性也有所考量。近日,一份内部资料揭示了Win32应用程序在Windows 10X中的运行机制。根据资料,Win32应用将通过类似Windows Linux子系统容器的模式运行,每个应用在独立的容器中运行...

如何把程序从windows平台移植到linux平台
1. 抽取其中用到的 Win32API, 分为通信类, 多线程类,时间字符串等函数类, 逐一封装成 Linux 的函数;2. 调试移植后的整个代码库, 并作必要的调整和修正;3. 需要 C++11\/14 的经验;4. 需要 Windows 和 Linux 高性能多线程 C++服务器程序开发和调试的经验,5. 需要 boost 及 zeromq, ...

linux下怎么样运行wine
apt-get install 软件名 就下载安装 升级就用 apt-get upgrade APT具有超级牛力,简直是神的指令 wine模拟的Win32 PE格式程序运行不稳定 所以flashget你用不上了 就是能运行恐怕也是频频退出 Linux下大家都用Downloader For X下载HTTP\/FTP资源 用aMule下载电驴资源 用Azureus下载BT资源 QQ就算了把 我一直...

ubnutu系统怎样运行在windows中安装的一些软件
媒体播放器 ubnutu里有。windows里的游戏在ub里会卡,因为显卡驱动不好。在ub里用windows的软件可以使用 wine,不过个人认为不是太易用。建议把ub装在 虚拟机里,或者在ub里安装windows的虚拟机。

如何在Windows和Linux上进行跨平台P\/Invoke
NET的程序是和Java一样的托管代码,在底层操作上,具有很大的局限性,像Java的JNI一样,.NET具有Platform Invoke(平台调用,通常叫P\/Invoke)。本文中,Linux下的.NET托管代码运行在Mono CLR上。之所以做跨平台的P\/Invoke,是因为考虑到有些客户在Win32\/WinCE等系统中开发的.NET程序,需要换到Linux平台...

相似回答