Xcode 4 Final - “armv6 armv7” issue while linking with armv6 libs

若如初见. 提交于 2019-12-17 15:42:54

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!