繁体   English   中英

应用内的可可32位和64位二进制文​​件

[英]Cocoa 32 bit and 64 bit binaries within app

我最新的Mac App被Mac App Store拒绝了。

基本上,由于该应用程序中包含一个自包含的unix可执行文件,因此无法正常工作。 我以前在我的应用程序中包含一个二进制文件,该应用程序在Mac App Store中,但是此Unix二进制文件给我带来了麻烦。

我已经在一台i386机器上编译了该二进制文件的2个不同版本,在x86_64机器上编译了另一个版本。 使用“文件名”,我得到了64位二进制文​​件

Mach-O 64位可执行文件x86_64

和32位二进制

Mach-O可执行文件i386

在运行时,我尝试执行正确的二进制文件,但是我发现这似乎无关紧要吗? 我使用哪个二进制文件,可以在i386机器上执行x86_64,一切正常。

我的应用程序构建设置是默认项目(标准的32/64位Intel)附带的设置。

问题是,当我的应用程序在i386机器上运行时,我应该尝试运行32位二进制文​​件吗?
当我在i386机器上运行x86_64二进制文件时,为什么还能正常工作?

谢谢,约翰。

为什么不将Unix工具构建为通用二进制文件? 然后,操作系统将根据计算机的体系结构选择要运行的正确版本的二进制文件。

编辑 -添加我的评论作为正确答案的一部分。

您需要构建i386和x86_64二进制文件。 显然,您需要为两种体系结构构建exe及其所有依赖项。 对于i386体系结构,在任何地方使用gcc标志-arch = i386可能就足够了。 然后,您可以使用lipo组合两个二进制文件。

您使事情变得太复杂了。 您不需要64位计算机来构建64位二进制文​​件,也不需要在64位计算机上构建32位二进制文​​件。

GCC以及XCode easilly支持构建32位通用映像或32/64位通用映像,因此您完全不必担心运行正确的映像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM