You don’t need to build your own cross-toolchain anymore - since version 8 of the toolchain, ARM and AArch64 sysroots are included in the zip (you can examine its contents), you just need to set it up using LINUX_MULTIARCH_ROOT variable and not deprecated LINUX_ROOT one. Edit your project’s DefaultEngine.ini and add (or change, if it exists) this section:
then re-build the Linux binaries (from scratch). You may encounter compiler errors since some targets will try to build ShaderCompileWorker first - please ignore ShaderCompileWorker ones as you don’t need SCW on the device.
So since I am currently using Unreal version 4.18 I download v10 clang 5.0.0-based. I copy this to my ARM device which is running Ubuntu 16.04 (I thought that version was recommended somewhere but I cant find it any more)
I install all the required packages and unzip. The I change directories to build/scripts and run the command /BuildCrossToolchain.sh
Turns out this file has some windows line feeds that prevent it from building. I dos2unix that file. Then I get an issue further down the line with a .config.2 file having a ‘/r’. Seems like that file is pulled from a repo or something
My question is am I even heading in the right direction? Is this the correct first step? What am I even building , it seems like its building a special version of gcc? or is this clang I am building? Is there a prebuilt version of this somewhere?
[Update] with help from RCL
Download V10 clang from description for 4.18
Unzip it into a stable location (eg c:\dev)
Set environment variable LINUX_MULTIARCH_ROOT ( EG c:\dev\v10_clang-5.0.0-centos7) This directory has the sub folder arm-unknown-linux-gnueabih (this will be refrenced later)
In your Unreal project edit /Config/DefaultEngine.ini add or modify the value
Thanks for the help! Ok this seems to change things now I am getting errors like this below, did I do something else wrong? (I added all my steps to the main question above if that helps but I referenced c drive instead of d to help others)
UATHelper: Packaging (Linux): [2/24] Compile PCH.UELinkerFixups.h
UATHelper: Packaging (Linux): d:\dev\TestProject 4.18\Intermediate\Build\Linux\48086BB4\TestProject\Development\UELinkerFixups\PCH.UELinkerFixups.h(2,10): error: non-portable path to file ‘“d\dev\TestProject 4.18\Intermediate\Build\Linux\48086BB4\UE4\Development\UELinkerFixupsName.h”’; specified path differs in case from file name on disk [-Werror,-Wnonportable-include-path]
Make sure you use consistent case in all your disk paths, in #include or otherwise.
Please examine the reported path and see if there’s something in it that is spelled differently in the actual file system, e.g. Dev instead of dev.
Should one still compile UE 4.23 in Windows as described above in order to get an ARM version? [I’m trying to get a version of UE 4 for the NVIDIA Nano].