Unable To build Linux ARM using First Person Template

I followed the instructions best I could using a clean installation of 4.18.1

  • downloaded v10 clang 5.0.0-based
  • Unzipped it to a stable location c:\dev
  • Set the ENV to LINUX_MULTIARCH_ROOT c:\dev\v10_clang-5.0.0-centos7 and rebooted for good measure
  • Modified C:\Program Files\Epic Games\UE_4.18\Engine\Source\Programs\UnrealBuildTool\Platform\Linux\UEBuildLinux.cs so the DefaultArchitecture was set to “arm-unknown-linux-gnueabihf”;
  • Launched Unreal 4.18.1
  • Created a new C++ project using the First Person Shooter template
  • Tested that It Packeged Win 64 Successfully
  • Exit Unreal
  • Modified the projects /Config/DefaultEngine.ini file (see below)
  • Restarted Unreal
  • Clicked “Refresh Visual Studio Project”
  • Tried to Package for Linux, it failed
  • Tried to build the Linux build from visual studio, it failed

Changes to Default Engine.ini:

[/Script/LinuxTargetPlatform.LinuxTargetSettings]
TargetArchitecture=ArmUnknownLinuxGnueabihf

Results of Linux Package:

UATHelper: Packaging (Linux): Running AutomationTool...
UATHelper: Packaging (Linux): Parsing command line: -ScriptsForProject=C:/dev/PlaineFPS2/PlaineFPS2.uproject BuildCookRun -nocompile -nocompileeditor -installed -nop4 -project=C:/dev/PlaineFPS2/PlaineFPS2.uproject -cook -stage -archive -archivedirectory=C:/dev/PlaineFPS2/packaged -package -clientconfig=Development -ue4exe=UE4Editor-Cmd.exe -pak -prereqs -nod
ebuginfo -targetplatform=Linux -build -utf8output
UATHelper: Packaging (Linux): Setting up ProjectParams for C:\dev\PlaineFPS2\PlaineFPS2.uproject
UATHelper: Packaging (Linux): ********** BUILD COMMAND STARTED **********
UATHelper: Packaging (Linux): Running: C:\Program Files\Epic Games\UE_4.18\Engine\Binaries\DotNET\UnrealBuildTool.exe PlaineFPS2 Linux Development -Project=C:\dev\PlaineFPS2\PlaineFPS2.uproject  C:\dev\PlaineFPS2\PlaineFPS2.uproject -NoUBTMakefiles  -remoteini="C:\dev\PlaineFPS2" -skipdeploy -noxge -generatemanifest -NoHotReload
UATHelper: Packaging (Linux):   Using LINUX_MULTIARCH_ROOT, building with toolchain 'C:\dev\v8_clang-3.9.0-centos7\v8_clang-3.9.0-centos7\arm-unknown-linux-gnueabihf'
UATHelper: Packaging (Linux): Took 5.8660741s to run UnrealBuildTool.exe, ExitCode=0
UATHelper: Packaging (Linux): Running: C:\Program Files\Epic Games\UE_4.18\Engine\Binaries\DotNET\UnrealBuildTool.exe PlaineFPS2 Linux Development -Project=C:\dev\PlaineFPS2\PlaineFPS2.uproject  C:\dev\PlaineFPS2\PlaineFPS2.uproject -NoUBTMakefiles  -remoteini="C:\dev\PlaineFPS2" -skipdeploy -noxge -NoHotReload -ignorejunk
UATHelper: Packaging (Linux):   Using LINUX_MULTIARCH_ROOT, building with toolchain 'C:\dev\v8_clang-3.9.0-centos7\v8_clang-3.9.0-centos7\arm-unknown-linux-gnueabihf'
UATHelper: Packaging (Linux):   Using compiler default (most likely libstdc++) standard C++ library.
UATHelper: Packaging (Linux):   Using old way to relink circularly dependent libraries (with a FixDeps step).
UATHelper: Packaging (Linux):   Performing 12 actions (2 in parallel)
UATHelper: Packaging (Linux):   [1/12] Compile SharedPCH.Engine.h
UATHelper: Packaging (Linux):   In file included from C:\Program Files\Epic Games\UE_4.18\Engine\Intermediate\Build\Linux\48086BB4\UE4\Development\Engine\SharedPCH.Engine.h:85:
UATHelper: Packaging (Linux):   In file included from C:\Program Files\Epic Games\UE_4.18\Engine\Source\Runtime\Engine\Public\EngineSharedPCH.h:326:
UATHelper: Packaging (Linux):   Runtime/InputCore/Classes\InputCoreTypes.h(10,10):  fatal error: 'InputCoreTypes.generated.h' file not found
UATHelper: Packaging (Linux):   #include "InputCoreTypes.generated.h"
UATHelper: Packaging (Linux):            ^
UATHelper: Packaging (Linux):   1 error generated.
UATHelper: Packaging (Linux):   ERROR: UBT ERROR: Failed to produce item: C:\dev\PlaineFPS2\Binaries\Linux\PlaineFPS2
UATHelper: Packaging (Linux):   Total build time: 40.64 seconds (Local executor: 0.00 seconds)
UATHelper: Packaging (Linux): Took 41.3385424s to run UnrealBuildTool.exe, ExitCode=5
UATHelper: Packaging (Linux): ERROR: Command failed (Result:5): C:\Program Files\Epic Games\UE_4.18\Engine\Binaries\DotNET\UnrealBuildTool.exe PlaineFPS2 Linux Development -Project=C:\dev\PlaineFPS2\PlaineFPS2.uproject  C:\dev\PlaineFPS2\PlaineFPS2.uproject -NoUBTMakefiles  -remoteini="C:\dev\PlaineFPS2" -skipdeploy -noxge -NoHotReload -ignorejunk. See logfi
le for details: 'UnrealBuildTool-2017.12.07-17.26.20.txt' 
UATHelper: Packaging (Linux):        (see C:\Users\\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+Program+Files+Epic+Games+UE_4.18\UAT_Log.txt for full exception trace)
UATHelper: Packaging (Linux): AutomationTool exiting with ExitCode=5 (5)
UATHelper: Packaging (Linux): BUILD FAILED
PackagingResults: Error: Unknown Error

You cannot use the launcher build to package for non-x86_64 Linux - you need to compile your editor from the sources (on Windows).

Also, note that the only 32-bit ARM platform that can work out of the box for non-server targets is NVidia Jetson. If you’re targeting something like Raspberry Pi (that only has GL ES), you will only be able to run a server build on it.

Not sure I understand what a server build means for a stand alone application, where is that specified?

This is not very well exposed through the UI, such a build can only be produced through RunUAT.bat BuildCookRun invocation. Change directory to Engine/Build/BatchFiles and there run RunUAT.bat with the following parameters:

RunUAT.bat BuildCookRun -project=“/full/path/to/your.uproject” -build -cook -stage -pak -noclient -server -serverplatform=Linux

This will produce the server build in your project’s Saved/StagedBuilds directory, which you can copy on the device. The server will be compiled for ARM if your TargetArchitecture is set appropriately in the project properties.

Server builds for something like FirstPerson template aren’t very useful; ShooterGame is better for testing this.

I dont understand why FirstPerson template isnt very useful. My target game will be a single player game that I want to run on an ARM system. I currently dont understand what a “server build” means and how that limits my game or my build. Will ARM users be able to play a stand alone game on the ARM device?

Does server build mean headless application to aid in multiplayer but does not allow local play?