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

标签 c 32bit-64bit

我正在开发 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/

相关文章:

c - 两个连续质数之间的最大差值

c - 使用 dup2 重定向 printf 失败

c - Eclipse 中 gcc 编译器的默认标志

c - "fork()"后printf异常

c - 在 C 中打印 64 位值

windows - 64 位 Windows API : what is the size of a C/C++ "DWORD"?

c++ - 如何判断返回的指针是在栈上还是堆上

java - JVM 和 Glassfish 32 位与 64 位

c - 将 32 位 C 源代码移植到 64 位

ios - 最近部署的我的应用程序 - 某些用户现在无法从旧设备运行(64 位问题)