Re: iOS Xcode 7.3. If I'm telling it to build for 8.0, why is it reporting that it's built for 8.3
Re: iOS Xcode 7.3. If I'm telling it to build for 8.0, why is it reporting that it's built for 8.3
- Subject: Re: iOS Xcode 7.3. If I'm telling it to build for 8.0, why is it reporting that it's built for 8.3
- From: Chris Hanson <email@hidden>
- Date: Tue, 28 Jun 2016 14:25:53 -0700
> On Jun 28, 2016, at 2:19 PM, Alex Zavatone <email@hidden> wrote:
>
>
>> On Jun 28, 2016, at 2:48 PM, Chris Hanson wrote:
>>
>>> On Jun 24, 2016, at 9:16 PM, Marco S Hyman <email@hidden> wrote:
>>>
>>> Building a library, step 1:
>>> compile a bunch of .c, .m, .cc, .whatever files into .o files
>>>
>>> Building a library, step 2:
>>> Link all the .o files created in step 1 into a .a file
>>
>> This is subtly incorrect.
>>
>> On UNIX systems, step 2 is typically:
>>
>> Archive all the .o files created into step 1 into a .a file
>>
>> Unless configured specially, a static library on UNIX systems is typically just an archive of *un-linked* .o files. They are neither linked against the frameworks and libraries against which they were built, nor linked against each other. All linkage (again, unless configured specially) happens at the time the .a is used to produce a final linked product such as an executable, bundle, or dylib.
>>
>> This can result in surprises when there are linkage requirements that aren't satisfied by a downstream consumer of the .a file.
>>
>> -- Chris
>
> I just got this same build warning again today on a completely different project where we suddenly have 900 warnings that the library we are linking to was built for 9.3, but the app linking to it is expecting 7.0.
That means the library or something it incorporated was built with a Deployment Target of 9.3, while your app was built with a Deployment Target of 7.0.
Every object file records the Deployment Target with which it was built, because it could have affected code generation. In a case like yours, the library may not weak-link APIs introduced before 9.3 (say in 8.0) and thus your app won't launch on that OS like you expect it to.
As has been said, you need to look at the compile commands for the files that make up the library, not the linkage of the library itself.
-- Chris
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
References: | |
| >iOS Xcode 7.3. If I'm telling it to build for 8.0, why is it reporting that it's built for 8.3 (From: Alex Zavatone <email@hidden>) |
| >Re: iOS Xcode 7.3. If I'm telling it to build for 8.0, why is it reporting that it's built for 8.3 (From: Kyle Sluder <email@hidden>) |
| >Re: iOS Xcode 7.3. If I'm telling it to build for 8.0, why is it reporting that it's built for 8.3 (From: Alex Zavatone <email@hidden>) |
| >Re: iOS Xcode 7.3. If I'm telling it to build for 8.0, why is it reporting that it's built for 8.3 (From: Roland King <email@hidden>) |
| >Re: iOS Xcode 7.3. If I'm telling it to build for 8.0, why is it reporting that it's built for 8.3 (From: Roland King <email@hidden>) |
| >Re: iOS Xcode 7.3. If I'm telling it to build for 8.0, why is it reporting that it's built for 8.3 (From: Alex Zavatone <email@hidden>) |
| >Re: iOS Xcode 7.3. If I'm telling it to build for 8.0, why is it reporting that it's built for 8.3 (From: Roland King <email@hidden>) |
| >Re: iOS Xcode 7.3. If I'm telling it to build for 8.0, why is it reporting that it's built for 8.3 (From: Marco S Hyman <email@hidden>) |
| >Re: iOS Xcode 7.3. If I'm telling it to build for 8.0, why is it reporting that it's built for 8.3 (From: Chris Hanson <email@hidden>) |
| >Re: iOS Xcode 7.3. If I'm telling it to build for 8.0, why is it reporting that it's built for 8.3 (From: Alex Zavatone <email@hidden>) |