views:

116

answers:

2

Here's my situation: I have the source code for a third-party framework that I want to include in my project. I'm developing on 10.6 but I want to support 10.5, so I have the base SDK and the deployment target set to 10.5.

I can build the framework and the application, and the app runs inside Xcode and on the machine. However, it fails on a 10.5.8 and crashes. The crash report says

Unknown required load command 0x80000022

I have also tried building the framework on the 10.5.8 machine, setting the architecture to '32/64-bit Universal'. Moving this framework to the 10.6 machine and attempting to build the app works, but the app fails to run, throwing multiple errors of:

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

Has anyone seen this before? Do you know of a fix or workaround? It can't be an uncommon situation.

A: 

Answer for the first error: unable to read unknown load command 0x80000022 - Stack Overflow, and it might have a bearing on the second error. What version Xcode and SDK are you using?

songdogtech
Xcode is version 3.2.2 and the SDK (base SDK) is 10.5. So the first answer doesn't help me at all, because he's targeting the iPhone and I'm targeting Mac OS X. Same error message but completely different circumstances.
Iain Delaney
+2  A: 

The loader command being flagged is the loader command for a compressed binary which is a binary type supported only on 10.6.

matchAndAssemble: is not a (documented) method of NSArray/NSMutableArray. It is, however, a method of the PKParser kit. Is that the framework you are trying to build?

Anyhow, something in your project is being built only for 10.6 and it's probably that framework. Check the build settings for all of your targets, and any targets of any sub projects and do an otool -l on any third party frameworks to look for the 22 load command.

JeremyP
Yes, I'm trying to build ParseKit, but I need it for 10.5 and 10.6. I'll double-check the build settings but I've been over them a few times already.
Iain Delaney
Try running otool -l on all of the binaries for for the project (i.e. the built libraries/executables inside the framework and application. See if any of the load commands are 0x80000022. That will at least tell you which target is causing the problem.
JeremyP
Should have checked before posting: 0x80000022 is represented in otool as cmd LD_DYLD_INFO_ONLY. If I build parsekit with a deployment target of 10.6, I get a LD_DYLD_INFO_ONLY load command, but if I build it with a deployment target of 10.5, I get a LD_DYLD_INFO command instead.
JeremyP
I have the deployment target set to 10.5, but I can't see either LD_DYLD_INFO_ONLY or LD_DYLD_INFO. I've now got the Framework compiled as 86x_64,i386,ppc. That seems to be able to talk to anything.
Iain Delaney