On Jun 24, 2016, at 9:16 PM, Marco S Hyman <[email protected]> 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


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/xcode-users/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to