我正在开发一个64位应用程序。是否可以在32位操作系统上运行64位应用程序?

时间:2010-02-25 09:58:11

标签: c 32bit-64bit

我正在开发一个64位应用程序。是否可以在32位操作系统上运行64位应用程序?

请注意,该问题是通用的,并非特定于Windows操作系统。事实上,应用程序本身可以在OS上移植。

9 个答案:

答案 0 :(得分:14)

(我们假设您正在讨论AMD64(== EM64T == x86_64)和x86分别为64位和32位)

您只能通过仿真(例如qemu)或某种虚拟化在x86处理器上运行AMD64代码(我相信VMWare可能支持64位32位主机操作系统上的64位客户操作系统 有能力的CPU)。但是,这意味着在仿真或虚拟化上运行64位操作系统,我相信。

在开发应用程序时,开发代码的32位和64位版本应该不会太难。

对于Mac,您可以发送包含两种类型代码的单个二进制文件,或者Mac OSX可以在32位内核上运行您的64位二进制文​​件(但仅限于支持x86_64的处理器)。对于Windows和Linux,您必须运送单独的安装程序,或运送一些智能安装程序,在安装时选择正确的二进制文件。对于Linux,有一个项目可以添加在AMD64处理器上的x86内核上运行AMD64代码的能力 - http://linuxpae64.sourceforge.net/ - 但它看起来并不像它在主线内核中走得很远。

您是否只有特殊原因需要生成64位二进制文​​件? 如果要访问额外的内存,那么32位操作系统无论如何都无法为您提供额外的内存 如果要避免必须测试2个不同的版本,那么只需生成32位版本,它就可以在Windows AMD64上运行,而且大多数Linux AMD64发行版都没有问题。

答案 1 :(得分:7)

在Windows上,仅使用virtual machine

在OS X上,64位应用程序本机运行(感谢Stephen)

答案 2 :(得分:5)

另一种方式很好,有点我认为你不能在32位操作系统上运行64位应用程序,你可以使用虚拟机或某种虚拟化。

答案 3 :(得分:4)

比在32位操作系统上运行64位程序(包括在32位操作系统之上通过模拟或虚拟64位平台执行)有一个更简单的解决方案:重新编译它32位操作系统

当你说它可以跨不同的操作系统移植时,你是否也指非64位操作系统?如果情况确实如此,我不能在没有“只有64位”资格的情况下调用可移植的东西,而且我认为很多(甚至可能是大多数?)程序员也期望这种资格,至少目前是这样。

答案 4 :(得分:3)

可以在软仿真模式下使用qemu

答案 5 :(得分:3)

没有

See Microsoft FAQ

  

术语32位和64位是指   计算机处理器的方式(也是   称为CPU),处理信息。   64位版本的Windows处理   大量随机存取存储器   (RAM)比32位更有效   系统。有关更多详细信息,请转到A.   描述之间的差异   32位版本的Windows Vista和   64位版本的Windows Vista   在线。

了解32位和64位之间的区别,你会发现为什么它不可能。

答案 6 :(得分:2)

请参阅this(假设您正在运行Windows):

  

如果该程序是专为64位版本的Windows设计的,则无法在32位版本的Windows上运行。 (但是,为32位版本的Windows设计的大多数程序都可以在64位版本的Windows上运行。)

     

为64位版本的Windows设计的设备驱动程序无法在运行32位版本Windows的计算机上运行。要了解如何检查驱动程序,请参阅更新无法正常工作的硬件驱动程序或访问设备制造商的网站。

答案 7 :(得分:2)

在Windows上,没有。在OS X上,是的。我不知道Linux上的事态是什么。

事实上,Snow Leopard引导到32位内核,但默认情况下会编译64位应用程序,所以这在OS X上很常见。

答案 8 :(得分:2)

64位应用程序不能在32位处理器周期运行

64位应用程序使用64位宽的寄存器。它显然不合适。