问题
Until xcode 4 final (I was using 3.latest and 4 GM for the time it was available) this didn't happen. When I upgraded to xcode 4 final version, I started getting a linking error while trying to link the armv7 version with my non armv7 library (my project is set with the default Standard armv6 armv7 valid architectures):
ld: warning: ignoring file ../bin/iOS static/arm/libssl.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../bin/iOS static/arm/libcrypto.a, file was built for archive which is not the architecture being linked (armv7)
Undefined symbols for architecture armv7: -- list of symbols --
The armv6 version compiles just fine, but the overall compilation process fails with 77 link errors.
I understand this is the expected behavior, it wont link towards armv7 with an armv6 lib. The fix is setting my project to armv6 only. My question here is: why was this working in the previous versions of xcode?
If I set to armv6 only, I start to get this warning:
Check dependencies
[BWARN]warning: all apps should include an armv7 architecture (current ARCHS = "armv6").
I don't like seeing warnings :-) Anybody having similar issues?
Thanks,
Fernando
回答1:
I just turned the Build active architecture only to Yes in the Project -> Build Setting -> Architectures tab.
回答2:
In iOS SDK 4.3, it looks like the linker will simply refuse to use a armv6 library in an armv7 binary - this wasn't the case before.
That's why I had to update the http://code.google.com/p/ios-static-libraries/ project to generate both armv6 and armv7 versions of the libraries.
回答3:
I have added 3rd Party framework with some demo classes into project but once implemented it successfully I removed those demo classes and since then the error started coming up Error "ld: ........., file is universal but does not contain a(n) armv6 slice for architecture armv6"
After scratching my head for a whole day I found this solution next morning maybe helpful for fellow iphone buddies coz I know the pain
Targets->"Your Project Target"-> Get Info ->Build Active Architecture only set to YES
Thats it..
回答4:
Had the same problem. But the reason was different I suppose. I was using the library.a file built for simulator and trying to run it on device.. came to know that i need different .a files for simulator and device. I hope this helps someone ;)
回答5:
Although I still don't know why this started happening only in the xcode 4 final version, I found that my external libs (ssl and crypto) were compiled against both armv6 and armv7 in the google code project very few days ago:
http://code.google.com/p/ios-static-libraries/
This will fix the issue if you define two different library search path: one for armv6, one for armv7.
Thanks,
来源:https://stackoverflow.com/questions/5316495/xcode-4-final-armv6-armv7-issue-while-linking-with-armv6-libs