【问题标题】:Mac Architecture QuestionsMac 架构问题
【发布时间】:2012-11-25 07:55:11
【问题描述】:

大家好 :) 我是开发 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) 中执行相同的应用程序??我做不到。

【问题讨论】:

    标签: macos osx-lion osx-snow-leopard 32bit-64bit


    【解决方案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 支持它时)在狮子。

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

    【讨论】:

    • 我正在使用 python 脚本来访问 32 位库。我认为即使我以 32 位模式加载 OS X lion,python 解释器也会加载其 64 位库,从而导致问题。无论如何,我已经跳过了这个问题并进一步移动。非常感谢您的评论,它真的很有用。
    • 在这种情况下,您需要在 32 位模式下运行 python 解释器,例如 arch -arch i386 /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
    猜你喜欢
    • 1970-01-01
    • 2022-07-27
    • 2021-08-12
    • 1970-01-01
    • 2011-02-14
    • 2018-05-26
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多