为什么linux不能运行win32程序

来源:百度知道 编辑:UC知道 时间:2024/05/28 14:44:43
都是exe程序,为什么不能运行呢?请讲详细一些。

从根本上说Win32和Linux的可执行文件的格式不同.
Win32的可执行文件是PE格式.
而Linux的可执行文件通常是ELF格式.
这样,在Linux下执行PE文件,Linux无法识别或是当作ELF来加载,当然无法运行.
另外,Linux与Windows的库函数截然不同也是一个原因.
根据这两个原因,linux下的wine就是让Linux识别PE格式并且提供WIN32所用的库函数(只是部分支持),因而可以用wine执行WIN32文件(效果不是很好).

原理不同,语言不通。比如你一直读中文,突然要你理解一本德文书,并将其讲出来,你能吗?操作系统也是这样。所以要运行不同系统的程序就得装虚拟机,就像人要翻译一样。

在很多西方国家,筷子不通用!除了在外华人.

linux和win32的库文件有很大差异,mfc和glibc库函数接口完全不一样,加上linux内核提供的系统调用和windows提供的也不相同,所以你就别想直接运行了,linux有个虚拟机叫wine,就是设计来运行windows程序的,但是不能用来玩游戏,大部分游戏需要directx函数库支持,wine包含directx的版本需要付费。

Linux下的可执行文件都是deb/rpm或者类似的名字,EXE是Windows下的可执行文件,自然不能在Linux下面运行。
如果你非要用的话,有一个兼容软件可以试试,不过效果不是很好:
http://www.winehq.com

Windows 的 exe 和 Linux 的程序结构不一样。
功能调用的方式不一样。
软件功能不一样。

最主要的还是程序接口不一样。

Windows 下可以用 mingw 编译 Linux 下面程序的源代码实现 Windows 下面可以用的程序,但前提是解决了软件环境的兼容。
Linux 下面运行 Windows 程序可以借助 Wine 这个程序接口转换程序实现(这也是 wine 名字的由来