Arm64 architecture in xcode 5.1

MrJre picture MrJre · Mar 11, 2014 · Viewed 73.7k times · Source

In the new XCode 5.1, arm64 has become among the standard architectures to build for.

However, in current projects of mine I included libraries (Google AdMob for example) that do not yet support this new architecture - these are now causing linker errors:

ld: symbol(s) not found for architecture arm64

Google AdMob 6.8.0 for example is said to be supporting arm64 but I can't really confirm this, unless cputype (16777228) cpusubtype (0) is arm64? (found through the file command-line tool)

libGoogleAdMobAds.a: Mach-O universal binary with 5 architectures
libGoogleAdMobAds.a (for architecture armv7):   current ar archive random library
libGoogleAdMobAds.a (for architecture armv7s):  current ar archive random library
libGoogleAdMobAds.a (for architecture i386):    current ar archive random library
libGoogleAdMobAds.a (for architecture x86_64):  current ar archive random library
libGoogleAdMobAds.a (for architecture cputype (16777228) cpusubtype (0)):   current ar archive random library

Is there a way to go about this?

Answer

M. Porooshani picture M. Porooshani · Mar 13, 2014

It's not that hard to get rid of arm64 for the time being. all you need to do is to:

  • Edit your target's Build Settings. Change the value for Architectures by opening the drop down, click on Other... and select it, delete the row with value $(ARCHS_STANDARD) and add two rows with values: armv7 and armv7s (or $(ARCHS_STANDARD_32_BIT) as mentioned by nschum), close the popup.

  • Edit the value Valid Architectures and simply remove the arm64 part of it.

  • Do it for every nested project you might have inside your workspace or project.

Note: This is not a solution, it's just a few steps to mitigate your current problem, please keep following your dependency projects to find out when they come with arm64 compatibility and revert these settings' change ASAP.

Good luck