0

大家好 :) 是为 Mac 开发应用程序的新手。我的问题是针对 Mac 中不同的操作系统架构,对此我感到非常困惑。如果我的问题很便宜,请多多包涵。谢谢大家:)

  1. 我知道 10.6(SnowLeopard) 支持 32 位。我想知道 10.7(Lion) 是否支持 32 位??

  2. 我有一台 64 位的机器。我想要一个 32 位的 10.7。我该怎么做??

  3. 我有一个 32 位 iMac,里面有 10.6.8。我已经在其上构建了一个应用程序;该应用程序使用用户开发的库,它也是 32 位的。现在我将这个应用程序运行到另一台具有 64 位处理器和 10.7(Lion) 的 Mac 机器上。我能否在 10.7(Lion) 中执行相同的应用程序??我无法这样做。

4

1 回答 1

1
  1. OS X 使用二进制格式,可以在单个可执行文件或库中支持多种架构(例如 32 位和 64 位 Intel,以及 PowerPC 等)。Lion 中的大多数二进制文件和库都是双架构 32 位和 64 位英特尔。所以,是的,Lion 支持 32 位。

  2. 没有 32 位 Lion 这样的东西;这是一个双架构操作系统。它可以以 32 位或 64 位模式启动内核,并以 32 位或 64 位模式运行程序。与大多数其他操作系统不同,它甚至可以在 32 位内核下以 64 位模式运行程序。每当您在 Lion 中运行程序时,它都会检查程序包含的架构以及 CPU 的能力,并选择“最佳”模式来运行该程序。

  3. 没有明显的理由这不应该起作用。如果您尝试使用运行在 64 位模式下的程序中的仅 32 位库,或者尝试使用运行在 32 位中的程序中的仅 64 位库,则会失败。但是如果程序只有 32 位,它显然会在该模式下运行,您的用户开发的库是 32 位的,并且操作系统提供的所有库都是 32+64 位的。

    有几件事可能会导致您的 32 位程序在 Lion 下失败。首先,它是否依赖于您提到的库和操作系统提供的库(例如,由 MacPorts、Fink 或 Homebrew 等本地编译的库)之外的任何库?如果是这样,这些库可能只编译为 64 位。应始终为所有相关架构编译 IMO 库以避免此类问题,但这不是默认设置。

    另一个可能的问题来源是如果您的程序不是真正的程序,而是加载到另一个程序中的东西(例如某种插件、屏幕保护程序等)。在这种情况下,您的插件需要支持将加载它的程序正在运行的任何模式。您实际上可以使用 Java 程序解决这个问题,因为 Java 运行时将以 64 位模式启动(当 CPU 支持它时)在狮子。

    告诉我们更多关于您的程序以及您遇到的具体错误可能会有很大帮助......

于 2012-12-07T19:01:29.620 回答