根据苹果的 mac 处理器列表,i5 应该是 64 位处理器。根据这个视频,如果我输入uname -m
终端,我应该得到 x86_64。但在我的情况下,它改为 i386。这是为什么?我还开发了一个应用程序,这是一个仅限 64 位的应用程序。该应用程序未在此 Mac 上运行。它在开始时崩溃。但是如果我在 x86_64 模式下编译而不是 64 位,那么它就可以工作。有人知道如何解决这个问题吗?
2 回答
32 位运行时不支持 ARC。因此,如果您使用 ARC,您将只需要生成 64 位二进制文件。
ARC 在 Xcode 4.2 中支持 OS X v10.6 和 v10.7(64 位应用程序)以及 iOS 4 和 iOS 5。弱引用在 OS X v10.6 和 iOS 4 中不受支持。
视频是错误的:uname -m
告诉你内核在什么模式下运行,这与你的用户态程序几乎没有关系。如果您想确定 CPU 是否支持 64 位,请使用sysctl hw.cpu64bit_capable
-- 因为您有 i5,所以它应该打印hw.cpu64bit_capable: 1
表示“是”(0 表示“否”)。此外,运行 Activity Monitor 实用程序,并注意各种进程正在运行的模式——我猜很多将在“Intel(64 位)”中,因为在 10.6 中,OS X 提供的大多数程序都是 32 /64 位双架构,并且会更喜欢 64 位。
现在,关于您的应用程序:无论您只编译 64 位还是 63/64,它都应该在 64 位模式下运行,所以我怀疑这就是问题所在。可以肯定的是,以 32/64 编译它,运行它,然后使用 Activity Monitor 查看它实际运行的模式。
我不能确定,但我猜你的应用程序与 ARC 有问题。至少据我了解,仅当您仅编译 64 位时才启用(如果编译 32/64 则禁用)。