我正在开发 64 位应用程序。是否可以在 32 位操作系统上运行 64 位应用程序?
请注意,该问题是通用的,并不特定于 Windows 操作系统。事实上,应用程序本身可以跨操作系统移植。
最佳答案
(我们假设您分别针对 64 位和 32 位谈论 AMD64(== EM64T == x86_64)和 x86)
您只能通过仿真(例如 qemu )或某种虚拟化(我相信 VMWare 可能在 64 位主机操作系统上的 32 位主机操作系统上支持 64 位 guest 操作系统)在 x86 处理器上运行 AMD64 代码 位能力的 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 发行版上正常运行。
关于c - 我正在开发 64 位应用程序。是否可以在 32 位操作系统上运行 64 位应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2333098/