Building for iOS results in error: clang: error: linker command failed

I try to build for iOS it used to work but now i get this error:

clang: error: linker command failed with exit code 1 (use -v to see invocation)

I am using a remote macMini as builder

I will attach my UATLog maybe someone know the issue.

1 Like

Same with UE 5.6.1 on MacOS 15.6:

LogPlayLevel: UAT: ------ Building 28 action(s) started ------
LogEOSSDK: LogEOS: Updating Product SDK Config, Time: 29837.404297
LogEOSSDK: LogEOS: SDK Config Product Update Request Completed - No Change
LogEOSSDK: LogEOS: ScheduleNextSDKConfigDataUpdate - Time: 29837.601562, Update Interval: 335.537689
LogPlayLevel: UAT: [1/28] Compile [arm64] SharedPCH.Core.Project.ValApi.ValExpApi.Cpp20.h
LogPlayLevel: UAT: [2/28] Compile [arm64] SharedPCH.CoreUObject.Project.ValApi.ValExpApi.Cpp20.h
LogPlayLevel: UAT: [3/28] Compile [arm64] SharedPCH.Slate.Project.ValApi.ValExpApi.Cpp20.h
LogPlayLevel: UAT: [4/28] Compile [arm64] SharedPCH.Engine.Project.ValApi.ValExpApi.Cpp20.h
LogPlayLevel: UAT: [5/28] Compile [arm64] MyVehicleOffroadCar.cpp
LogPlayLevel: UAT: [6/28] Compile [arm64] MyVehicleGameMode.cpp
LogPlayLevel: UAT: [7/28] Compile [arm64] MyVehicle.cpp
LogPlayLevel: UAT: [8/28] Compile [arm64] Module.MyVehicle.cpp
LogPlayLevel: UAT: [9/28] Compile [arm64] MyVehicleOffroadWheelRear.cpp
LogPlayLevel: UAT: [10/28] Compile [arm64] MyVehicleOffroadWheelFront.cpp
LogPlayLevel: UAT: [11/28] Compile [arm64] MyVehiclePawn.cpp
LogPlayLevel: UAT: [12/28] Compile [arm64] MyVehiclePlayerController.cpp
LogPlayLevel: UAT: [13/28] Compile [arm64] MyVehicleSportsWheelFront.cpp
LogPlayLevel: UAT: [14/28] Compile [arm64] MyVehicleSportsCar.cpp
LogPlayLevel: UAT: [15/28] Compile [arm64] MyVehicleSportsWheelRear.cpp
LogPlayLevel: UAT: [16/28] Compile [arm64] MyVehicleUI.cpp
LogPlayLevel: UAT: [17/28] Compile [arm64] MyVehicleWheelFront.cpp
LogPlayLevel: UAT: [18/28] Compile [arm64] MyVehicleWheelRear.cpp
LogPlayLevel: UAT: [19/28] Compile [arm64] OffroadGameMode.cpp
LogPlayLevel: UAT: [20/28] Compile [arm64] TimeTrialGameMode.cpp
LogPlayLevel: UAT: [21/28] Compile [arm64] TimeTrialStartUI.cpp
LogPlayLevel: UAT: [22/28] Compile [arm64] TimeTrialTrackGate.cpp
LogPlayLevel: UAT: [23/28] Compile [arm64] TimeTrialPlayerController.cpp
LogPlayLevel: UAT: [24/28] Compile [arm64] TimeTrialUI.cpp
LogPlayLevel: UAT: [25/28] sh /Volumes/Unreal Engine/Unreal Projects/MyVehicle/Binaries/IOS/MyVehicle (UBA disabled)
LogPlayLevel: Warning: UAT: ld: warning: ignoring duplicate libraries: '/Volumes/Unreal Engine/UE_5.6/Engine/Source/ThirdParty/Vorbis/libvorbis-1.3.2/lib/IOS/libvorbis.a', '/Volumes/Unreal Engine/UE_5.6/Engine/Source/ThirdParty/Vorbis/libvorbis-1.3.2/lib/IOS/libvorbisenc.a', '/Volumes/Unreal Engine/UE_5.6/Engine/Source/ThirdParty/Vorbis/libvorbis-1.3.2/lib/IOS/libvorbisfile.a'
LogPlayLevel: UAT: ld: framework 'iAD' not found
LogPlayLevel: Error: UAT: clang++: error: linker command failed with exit code 1 (use -v to see invocation)
LogPlayLevel: UAT: Trace written to file /Users/jason/Library/Logs/Unreal Engine/LocalBuildLogs/UBA-MyVehicle-IOS-Development.uba with size 16.3kb
LogPlayLevel: UAT: Total time in Unreal Build Accelerator local executor: 189.97 seconds
LogPlayLevel: UAT: Result: Failed (OtherCompilationError)
LogPlayLevel: UAT: Total execution time: 211.46 seconds
LogPlayLevel: UAT: Took 211.75s to run dotnet, ExitCode=6
LogPlayLevel: UAT: UnrealBuildTool failed. See log for more details. (/Users/jason/Library/Logs/Unreal Engine/LocalBuildLogs/UBA-MyVehicle-IOS-Development.txt)
LogPlayLevel: UAT: AutomationTool executed for 0h 3m 37s
LogPlayLevel: UAT: AutomationTool exiting with ExitCode=6 (6)
LogPlayLevel: Completed Launch On Stage: Build Task, Time: 211.261781
LogPlayLevel: Error: UAT: RunUAT ERROR: AutomationTool was unable to run successfully. Exited with code: 6
PackagingResults: Error: Launch failed! Unknown Error

iAD Framework has been deprecated (2016) and removed from the iOS SDK (2025)

https://github.com/EpicGames/UnrealEngine/pull/13685

The problem here turns out to be that MacOS was installed on a case-sensitive filesystem.

The iAd Framework (note the camelCase with uppercase A and lowercase d) still exists in the iOS SDK at this location:

% ls /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/iAd.framework 
Headers	iAd.tbd	Modules

However, UE 5.6.1 and all previous releases contain build instructions to link with the iAD framework.

The same problem prevents linking with the CloudKit framework, because UE tries to link with a different framework named “Cloudkit” (lowercase k) which, on a case-insensitive filesystem like APFS isn’t viewed as a different path.

NOTE: my installation of UE 5.6.1 uses an APFS case-insensitive Volume, which I suspect will work fine now that I know where to look for dependencies during the build process that might be case sensitive. Providing the required frameworks or library files in a subdirectory created under my APFS Volume and adding -F/Volumes/UEBuild to my linker settings lets me continue the build process to find out if some other case-sensitive build step is going to fail next. I don’t have the iOS App building completely yet, now I need to pay Apple for a developer account so I can use code signing.