File is universal (three slices), but it does not contain a(n) ARMv7-s slice error for static libraries on iOS, anyway to bypass?

IosObjective CXcodeIos6Static Libraries

Ios Problem Overview


I upgraded Xcode version and when using external static libraries, I get this message:

> ld: file is universal (3 slices) but does not contain a(n) armv7s slice: /file/location for architecture armv7s clang: error: linker command failed with exit code 1 (use -v to see invocation)

Is there any way to bypass this and add support to the library if the developer of the library hasn't updated their library yet?

Ios Solutions


Solution 1 - Ios

If you want to remove the support for any architecture, for example, ARMv7-s in your case, use menu Project -> Build Settings -> remove the architecture from "valid architectures".

You can use this as a temporary solution until the library has been updated. You have to remove the architecture from your main project, not from the library.

Alternatively, you can set the flag for your debug configuration's "Build Active Architecture Only" to Yes. Leave the release configuration's "Build Active Architecture Only" to No, just so you'll get a reminder before releasing that you ought to upgrade any third-party libraries you're using.

Solution 2 - Ios

I've simply toggled "Build Active Architecture Only" to "Yes" in the target's build settings, and it's OK now!

Solution 3 - Ios

Try to remove armv7s from project's "Valid architecture" to release from this issue for iOS 5.1 phone

Solution 4 - Ios

I just posted a fix here that would also apply in this case - basically, you do a hex find-and-replace in your external library to make it think that it's ARMv7s code. You should be able to use lipo to break it into 3 static libraries, duplicate / modify the ARMv7 one, then use lipo again to assemble a new library for all 4 architectures.

Solution 5 - Ios

Flurry Support for iPhone 5 (ARMv7s) As I mentioned in yesterday’s post, Flurry started working on a version of the iOS SDK to support the ARMv7s processor in the new iPhone 5 immediately after the announcement on Wednesday.

I am happy to tell you that the work is done and the SDK is now available on the site.

Solution 6 - Ios

use menu Project -> Build Settings ->

then remove armv7s from the"valid architectures". If standard has been chosen then delete that and then add armv7.

Solution 7 - Ios

In case this happens to someone. I built my own library to use with a third party code. While I was building it to deliver, I accidentally left my iPhone 4S plugged in, and so Xcode built my library only for the plugged architecture instead of following the project settings. Remove any plugged in devices and rebuilt the library, link it, and you should be all right.

Hope it helps.

Solution 8 - Ios

In my case, I was linking to a third-party library that was a bit old (developed for iOS 6, on XCode 5 / iOS 7). Therefore, I had to update the third-party library, do a Clean and Build, and it now builds successfully.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDafna ElazazerView Question on Stackoverflow
Solution 1 - IosNicholasView Answer on Stackoverflow
Solution 2 - IosBlasco73View Answer on Stackoverflow
Solution 3 - IosArthur JenView Answer on Stackoverflow
Solution 4 - IosErtebolleView Answer on Stackoverflow
Solution 5 - IosRAZView Answer on Stackoverflow
Solution 6 - IosPankyView Answer on Stackoverflow
Solution 7 - IosRaphael AyresView Answer on Stackoverflow
Solution 8 - IosJay ImermanView Answer on Stackoverflow