[SOLVED]Apple Mach-O Linker Error when Building

Hello,

I am experiencing a rather frustrating problem when attempting to archive my project… I get about 80 different Mach-O linker errors, and the warning above it gives me “Undefinded symbols for architecture arm64”. I was under the impression that after unity 4.6, 64 bit architectures were supported, and I am now running unity 5.0(and Xcode6.1). Am I incorrect? or is this an entirely different problem? Thank you So much for all your help! The xcode error log is as follows:

 ld: warning: ignoring file /Users/(...)/Libraries/libiPhone-lib.a, file was built for
archive which is not the architecture being linked (arm64): /Users/(...)/Libraries/libiPhone-lib.a
Undefined symbols for architecture arm64:
  "_UnityRegisterProInterface", referenced from:
      +[UnityAppController(RegisterProInterface) load] in UnityProInterface.o
  "_UnityADInterstitialADWasLoaded", referenced from:
      -[UnityInterstitialAd interstitialAdDidLoad:] in iAD.o
  "_UnityADBannerViewWasLoaded", referenced from:
      -[UnityADBanner bannerViewDidLoadAd:] in iAD.o
  "_UnityDropViewTouchProcessing", referenced from:
      -[UnityADBanner dealloc] in iAD.o
  "_UnitySetLogEntryHandler", referenced from:
      UnityInitTrampoline() in UnityAppController.o
  "_UnityCleanup", referenced from:
      -[UnityAppController applicationWillTerminate:] in UnityAppController.o
  "_UnityOnApplicationWillResignActive", referenced from:
      -[UnityAppController applicationWillResignActive:] in UnityAppController.o
  "_UnityGetAppBackgroundBehavior", referenced from:
      -[UnityAppController applicationWillResignActive:] in UnityAppController.o
  "_UnitySendRemoteNotificationError", referenced from:
      -[UnityAppController application:didFailToRegisterForRemoteNotificationsWithError:] in UnityAppController.o
  "_UnitySendDeviceToken", referenced from:
      -[UnityAppController application:didRegisterForRemoteNotificationsWithDeviceToken:] in UnityAppController.o
  "_UnityLoadApplication", referenced from:
      -[UnityAppController startUnity:] in UnityAppController.o
  "_UnitySetPlayerFocus", referenced from:
      -[UnityAppController startUnity:] in UnityAppController.o
      -[UnityAppController applicationDidBecomeActive:] in UnityAppController.o
      -[UnityAppController applicationWillResignActive:] in UnityAppController.o
  "_UnitySendTouchesMoved", referenced from:
      -[UnityView touchesMoved:withEvent:] in UnityView.o
  "_UnitySendTouchesEnded", referenced from:
      -[UnityView touchesEnded:withEvent:] in UnityView.o
  "_UnityInitApplicationGraphics", referenced from:
      -[UnityAppController startUnity:] in UnityAppController.o
  "_UnityGetSRGBRequested", referenced from:
      -[UnityView recreateGLESSurfaceIfNeeded] in UnityView.o
      -[UnityView recreateGLESSurface] in UnityView.o
  "_UnityFinishedMetalFrame", referenced from:
      ___TeardownFrameRenderingMTL_block_invoke in MetalHelper.o
  "_UnityWillPause", referenced from:
      -[UnityAppController applicationWillResignActive:] in UnityAppController.o
  "_UnityGetDesiredMSAASampleCount", referenced from:
      -[UnityView recreateGLESSurfaceIfNeeded] in UnityView.o
      -[UnityView recreateGLESSurface] in UnityView.o
  "_UnityDidCaptureVideoFrame", referenced from:
      -[CameraCaptureController captureOutput:didOutputSampleBuffer:fromConnection:] in CameraCapture.o
  "_UnityReportWWWFinishedLoadingData", referenced from:
      -[UnityWWWConnectionDelegate connectionDidFinishLoading:] in WWWConnection.o
  "_UnityStartMetalFrame", referenced from:
      _PrepareFrameRenderingMTL in MetalHelper.o
  "_UnityGetCommandBufferMetal", referenced from:
      _PresentMTL in MetalHelper.o
  "_UnityCreateExternalColorSurfaceMTL", referenced from:
      _CreateUnityRenderBuffersMTL in MetalHelper.o
      _PrepareRenderingMTL in MetalHelper.o
  "_UnityUpdateDisplayList", referenced from:
      -[DisplayManager updateDisplayListInUnity] in DisplayManager.o
  "_UnityRequestedScreenOrientation", referenced from:
      -[UnityAppController(ViewHandling) createRootViewController] in UnityAppController+ViewHandling.o
      -[UnityAppController(ViewHandling) checkOrientationRequest] in UnityAppController+ViewHandling.o
  "_UnityGetDataContextGLES", referenced from:
      -[DisplayConnection initRendering] in DisplayManager.o
  "_UnitySetAsDefaultFBOMetal", referenced from:
      _PreparePresentMTL in MetalHelper.o
  "_UnityIsCaptureScreenshotRequested", referenced from:
      _PreparePresentGLES in GlesHelper.o
      _PreparePresentMTL in MetalHelper.o
  "_UnityDisableRenderBuffers", referenced from:
      -[DisplayManager screenDidDisconnect:] in DisplayManager.o
      _PrepareRenderingMTL in MetalHelper.o
  "_UnityPrepareEndMetalFrame", referenced from:
      _TeardownFrameRenderingMTL in MetalHelper.o
  "_UnityCaptureScreenshot", referenced from:
      _PreparePresentGLES in GlesHelper.o
      _PreparePresentMTL in MetalHelper.o
  "_UnitySetAsDefaultFBO", referenced from:
      _PreparePresentGLES in GlesHelper.o
      _PrepareFrameRenderingGLES in GlesHelper.o
  "_UnitySetFBO", referenced from:
      _PreparePresentGLES in GlesHelper.o
  "_UnitySendTouchesCancelled", referenced from:
      -[UnityView touchesCancelled:withEvent:] in UnityView.o
  "_UnityBlitToSystemFBOMetal", referenced from:
      _PreparePresentMTL in MetalHelper.o
  "_UnityBlitToSystemFB", referenced from:
      _PreparePresentGLES in GlesHelper.o
  "_UnitySendRemoteNotification", referenced from:
      -[UnityAppController application:didReceiveRemoteNotification:] in UnityAppController.o
      -[UnityAppController application:didFinishLaunchingWithOptions:] in UnityAppController.o
  "_UnityDestroyExternalSurface", referenced from:
      _DestroyUnityRenderBuffersGLES in GlesHelper.o
      _DestroyUnityRenderBuffersMTL in MetalHelper.o
  "_UnityCreateExternalSurfaceGLES", referenced from:
      _CreateUnityRenderBuffersGLES in GlesHelper.o
  "_UnityReportResizeView", referenced from:
      -[UnityView onUpdateSurfaceSize:] in UnityView.o
  "_UnityCreateDummySurface", referenced from:
      _CreateUnityRenderBuffersGLES in GlesHelper.o
      _CreateUnityRenderBuffersMTL in MetalHelper.o
  "_UnityIsOrientationEnabled", referenced from:
      -[UnityDefaultViewController supportedInterfaceOrientations] in UnityViewControllerBase.o
  "_UnityRegisterFBO", referenced from:
      _CreateUnityRenderBuffersGLES in GlesHelper.o
  "_UnityHasRenderingAPIExtension", referenced from:
      _InitRenderingGLES in GlesHelper.o
  "_UnityReportBackbufferChange", referenced from:
      -[UnityView recreateGLESSurface] in UnityView.o
  "_UnityReportWWWSentData", referenced from:
      -[UnityWWWConnectionDelegate connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:] in WWWConnection.o
  "_UnitySetViewTouchProcessing", referenced from:
      -[KeyboardDelegate init] in Keyboard.o
      -[UnityADBanner initImpl:layout:type:] in iAD.o
  "_UnityCreateExternalDepthSurfaceMTL", referenced from:
      _CreateUnityRenderBuffersMTL in MetalHelper.o
  "UnitySetLastHeading(float, float, float, float, float, double)", referenced from:
      -[LocationServiceDelegate locationManager:didUpdateHeading:] in iPhone_Sensors.o
  "_UnityPause", referenced from:
      -[UnityAppController(UnityInterface) setPaused:] in UnityAppController+UnityInterface.o
      -[UnityAppController applicationDidBecomeActive:] in UnityAppController.o
      -[UnityAppController applicationWillResignActive:] in UnityAppController.o
      -[UnityADBanner bannerViewActionShouldBegin:willLeaveApplication:] in iAD.o
      -[UnityADBanner bannerViewActionDidFinish:] in iAD.o
      -[UnityInterstitialAd viewDidDisappear:] in iAD.o
      -[UnityInterstitialAd viewWillAppear:] in iAD.o
      ...
     (maybe you meant: _UnityPauseCameraCapture)
  "_UnityIsRenderingAPISupported", referenced from:
      -[UnityAppController(Rendering) selectRenderingAPI] in UnityAppController+Rendering.o
  "_UnityInputProcess", referenced from:
      _UnityRepaint in UnityAppController+Rendering.o
  "_UnityUseAnimatedAutorotation", referenced from:
      WillRotateToInterfaceOrientation_DefaultImpl(objc_object*, objc_selector*, UIInterfaceOrientation, double) in UnityViewControllerBase.o
      ViewWillTransitionToSize_DefaultImpl(objc_object*, objc_selector*, CGSize, id<UIViewControllerTransitionCoordinator>) in UnityViewControllerBase.o
  "_UnityShouldAutorotate", referenced from:
      -[UnityDefaultViewController supportedInterfaceOrientations] in UnityViewControllerBase.o
      -[UnityAppController(ViewHandling) createRootViewController] in UnityAppController+ViewHandling.o
      -[UnityAppController(ViewHandling) checkOrientationRequest] in UnityAppController+ViewHandling.o
  "_UnityPlayerLoop", referenced from:
      _UnityRepaint in UnityAppController+Rendering.o
      -[UnityAppController applicationWillResignActive:] in UnityAppController.o
  "_UnityWillResume", referenced from:
      -[UnityAppController applicationDidBecomeActive:] in UnityAppController.o
  "_UnityGetRenderingResolution", referenced from:
      -[UnityView recreateGLESSurfaceIfNeeded] in UnityView.o
      -[UnityView recreateGLESSurface] in UnityView.o
  "_UnityGetTargetFPS", referenced from:
      -[UnityAppController(Rendering) createDisplayLink] in UnityAppController+Rendering.o
  "_UnityIsPaused", referenced from:
      -[UnityAppController(UnityInterface) paused] in UnityAppController+UnityInterface.o
      -[UnityAppController(Rendering) repaint] in UnityAppController+Rendering.o
      -[UnityView didRotate] in UnityView.o
      -[UnityView recreateGLESSurface] in UnityView.o
      -[UnityAppController applicationDidBecomeActive:] in UnityAppController.o
      -[UnityAppController(ViewHandling) showGameUI] in UnityAppController+ViewHandling.o
  "_UnityReportWWWStatusError", referenced from:
      -[UnityWWWConnectionDelegate connection:didReceiveResponse:] in WWWConnection.o
  "UnitySetLastLocation(double, float, float, float, float, float)", referenced from:
      -[LocationServiceDelegate locationManager:didUpdateLocations:] in iPhone_Sensors.o
  "_UnityGetLaunchScreenXib", referenced from:
      -[SplashScreenController create:] in SplashScreen.o
  "_UnityReportWWWReceivedResponse", referenced from:
      -[UnityWWWConnectionDelegate connection:didReceiveResponse:] in WWWConnection.o
  "_UnityADBannerViewWasClicked", referenced from:
      -[UnityADBanner bannerViewActionDidFinish:] in iAD.o
  "_UnityReportWWWReceivedData", referenced from:
      -[UnityWWWConnectionDelegate connection:didReceiveData:] in WWWConnection.o
  "_UnityReportWWWFailedWithError", referenced from:
      -[UnityWWWConnectionDelegate connection:didFailWithError:] in WWWConnection.o
  "_UnitySetFBOMetal", referenced from:
      _PreparePresentMTL in MetalHelper.o
  "_UnityFinishRendering", referenced from:
      -[UnityAppController(ViewHandling) orientInterface:] in UnityAppController+ViewHandling.o
  "_UnityInitApplicationNoGraphics", referenced from:
      -[UnityAppController application:didFinishLaunchingWithOptions:] in UnityAppController.o
  "_UnitySendLocalNotification", referenced from:
      -[UnityAppController application:didReceiveLocalNotification:] in UnityAppController.o
      -[UnityAppController application:didFinishLaunchingWithOptions:] in UnityAppController.o
  "_UnitySendTouchesBegin", referenced from:
      -[UnityView touchesBegan:withEvent:] in UnityView.o
  "_UnityDisableDepthAndStencilBuffers", referenced from:
      -[UnityView recreateGLESSurfaceIfNeeded] in UnityView.o
      -[UnityView recreateGLESSurface] in UnityView.o
  "_UnityParseCommandLine", referenced from:
      _main in main.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

found

  1. update Unity to 4.6.5
  2. choose in player setting under other settings : universal platform and IL2CPP
  3. update all plugins as these need to support arm64

should work now

I believe this is a duplicate and has been answered before, but its a new problem relating to a new engine, so it’s worthwhile it being here.

http://answers.unity3d.com/questions/788331/xcode-511-missing-architectures-arm64.html

Better solution to overcome from this problem is to check the architecture of the library before using it. To check architecture you can use lipo -info libiPhone-lib.a command from terminal. In my case it worked well.

choose in player setting under other settings : universal platform and IL2CPP
i can’t do this not active property ~~!!!

How i fixed this problem is i removed unity Ads which which was giving me a linker error then I rebuild the project in a new folder not replacing files then fixed my apple id in xcode to make sure i was using the correct account and i build and it seemed to work fine just try and build the project as a brand new build in unity for xcode. Hope this helps!

For me, the linker error was caused by Player Settings/ Scripting Backend being set to Mono
Changed it to IL2CPP and it enables the architecture of armv7