64位处理器在mac上以32位运行

时间:2013-03-08 11:55:58

标签: macos 64-bit 32-bit processor

根据apple's mac processor list,i5应该是64位处理器。根据{{​​3}},如果我在终端中输入uname -m,我应该得到x86_64。但在我的情况下,它说的是i386。这是为什么?我开发了一个应用程序,这是一个64位的应用程序。该应用程序未在此Mac上运行。它在开始时崩溃了。但如果我在x86_64模式而不是64位编译,那么它的工作原理。有人知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

32位运行时不支持ARC。因此,如果您使用ARC,则只需要生成64位二进制文​​件。

来自Transitioning to ARC Release Notes

  

Xcode 4.2支持OS for OS X v10.6和v10.7(64位   应用程序)和iOS 4和iOS 5.弱引用不是   在OS X v10.6和iOS 4中受支持。

答案 1 :(得分:1)

视频错误:uname -m告诉你内核运行的模式,这与你的用户程序很少有关。如果你想确定CPU是否支持64位,请使用sysctl hw.cpu64bit_capable - 因为你有一个i5,它应该打印hw.cpu64bit_capable: 1意思是“是”(0表示“否” “)。此外,运行活动监视器实用程序,并注意各种进程正在运行的模式 - 我的猜测是很多将在“英特尔(64位)”中,因为在10.6中,OS X提供的大多数程序都来自32 / 64位双架构,并且更喜欢64位。

现在,关于你的应用程序:它应该以64位模式运行,无论你只编译64位还是63/64,所以我怀疑这是问题所在。可以肯定的是,将其编译为32/64,运行它,然后使用Activity Monitor查看它实际运行的模式。

我无法确定,但我的猜测是您的应用有ARC问题。至少据我所知,只有在你只编译64位时才会启用(如果编译32/64则禁用)。