【发布时间】:2011-04-19 16:16:19
【问题描述】:
我最新的 Mac 应用被 Mac App Store 拒绝。
由于应用程序中包含自包含的 unix 可执行文件,基本上它不起作用。 我之前在我的应用程序中包含了一个二进制文件,该应用程序在 Mac App Store 中,但这个 unix 二进制文件给我带来了麻烦。
我在 i386 机器上编译了这个二进制文件的 2 个不同版本,另一个在 x86_64 机器上编译。 使用“文件 appname”,我得到了 64 位二进制文件
Mach-O 64 位可执行 x86_64
和 32 位二进制
Mach-O 可执行 i386
在运行时我尝试执行正确的二进制文件,但我注意到这似乎无关紧要?我使用哪个二进制文件,我可以在 i386 机器上执行 x86_64 并且一切正常。
我的应用程序构建设置是默认项目附带的(标准 32/64 位英特尔)。
问题是当我的应用程序在 i386 机器上运行时,我应该尝试运行 32 位二进制文件吗?
当我在 i386 机器上运行时,为什么我的 x86_64 二进制文件可以工作?
谢谢,约翰。
【问题讨论】:
-
你怎么知道‘i386机器’只有i386?另外,为什么不是通用版本?
-
我使用“uname -a”检查了 i386 机器,上面写着 i386,但我不知道它可以运行其他架构?
-
IIRC uname 告诉内核架构,支持 64 位的机器可以引导 32 位内核——这在一些支持 64 位但 EFI 不支持的 Core 2 Duo 机器中是强制性的.运行
sysctl hw.cpu64bit_capable— 如果机器支持 64 位,则显示 1,否则显示 0。 -
uname -a会告诉你内核是 32 位还是 64 位,但它不会告诉你 CPU 的情况。前几代英特尔 Mac 使用支持 64 位的 Core 2 处理器,附带 32 位固件,因此内核必须是 32 位,但用户空间代码可以是 64 位。 -
啊,我看到两台机器都说它们支持 64 位。我认为它的核心独奏真的很老了,可能会让我感到悲伤。
标签: objective-c cocoa macos unix