2010-04-12 49 views
2

这是我的情况:我有我想要包含在我的项目中的第三方框架的源代码。我正在开发10.6,但我想支持10.5,所以我有基础SDK和部署目标设置为10.5。如何在可运行于10.5的OS X 10.6上构建应用程序和框架?

我可以构建框架和应用程序,并在Xcode和机器上运行应用程序。但是,它在10.5.8上失败并崩溃。崩溃报告说

Unknown required load command 0x80000022

我也曾尝试建立框架10.5.8机器上,该架构设置为'32/64位通用”。移动此框架到10.6机器,并试图建立应用程序是否运行,但应用程序运行失败,抛出的多个错误:

-[NSCFArray matchAndAssemble:]: unrecognized selector sent to instance 0x3503c0

有没有人见过这个?你知道一个修复或解决方法吗?这不是一个不常见的情况。

+0

所以,刚需迂腐,如果建立在10.5得到的图书馆工作正常的10.5,同样SDK版本,建立在10.6,导致不同的二进制甚至当你的目标10.5?这让我的脑海里有些微不足道。但他们我更像一个Linux人。 :-) – 2010-04-12 19:52:05

+0

我发现如果我将架构设置为'本地架构'并将基本SDK和部署设置为10.5,则构建了框架和应用程序,但我有一个工作程序,但其中一个不会真正运行在10.5 – 2010-04-12 23:19:29

回答

0

回答的第一个错误:unable to read unknown load command 0x80000022 - Stack Overflow,以及它可能具有的第二个错误的轴承。你使用的是什么版本的Xcode和SDK?

+0

Xcode是版本3.2.2和SDK(基本SDK)是10.5。所以第一个答案根本没有帮助我,因为他的目标是iPhone,而我的目标是Mac OS X.相同的错误信息,但完全不同的情况。 – 2010-04-12 19:00:35

2

装载机命令被标记为压缩的二进制这是仅在10.6支持二进制类型的loader命令。

matchAndAssemble:不是的NSArray/NSMutableArray里的(记录)方法。不过,这是PKParser套件的一种方法。这是你正在尝试构建的框架吗?

无论如何,您的项目中的某些内容仅为10.6而构建,可能是该框架。检查所有目标的构建设置以及任何子项目的任何目标,并在任何第三方框架上执行otool -l以查找22加载命令。

+0

是的,我正在尝试构建ParseKit,但我需要10.5和10.6。我将仔细检查构建设置,但我已经对它们进行过几次了。 – 2010-04-12 21:39:55

+0

尝试在项目的所有二进制文件上运行otool -l(即在框架和应用程序中构建的库/可执行文件,查看是否有任何加载命令是0x80000022,那至少会告诉你哪个目标导致了问题。 – JeremyP 2010-04-12 22:36:13

+0

应该在发布前检查:0x80000022在otool中表示为cmd LD_DYLD_INFO_ONLY。如果我构建了一个部署目标为10.6的parsekit,我得到一个LD_DYLD_INFO_ONLY加载命令,但是如果我使用10.5的部署目标构建它, LD_DYLD_INFO命令。 – JeremyP 2010-04-12 22:49:07

相关问题