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?
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