x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

Cross Compiling for Linux-ARM/Raspberry PI 3

I have tried this for various versions of Unreal and can really using Anything between 4.15 - 4.18 I started by following: https://wiki.unrealengine.com/Compiling_For_Linux

But its really unclear where to start. So there is clang-3.5.0-arm but it seems like that is for Unreal version <= 4.8

So instead started to follow the directions to build my own to function with a version of unreal my game works with following these directions https://wiki.unrealengine.com/Building_Linux_cross-toolchain

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

      [/Script/LinuxTargetPlatform.LinuxTargetSettings]
    
      TargetArchitecture=ArmUnknownLinuxGnueabihf
    
    
  • Edit your Engine seetings UEBUildLinux.cs (eg C:\Program Files\Epic Games\UE_4.18\Engine\Source\Programs\UnrealBuildTool\Platform\Linux\UEBuildLinux.cs)

      static private string DefaultArchitecture = "x86_64-unknown-linux-gnu"; 
    

and un-commenting the linux-arm architecture line just below it:

 //static private string DefaultArchitecture = "arm-unknown-linux-gnueabihf";

this is the path for the sub-directory referenced byLINUX_MULTIARCH_ROOT

  • Back in your project directory regenerate your sln file Right-click on your .uproject and select "Generate Visual Studio Project Files"

Product Version: UE 4.18
Tags:
more ▼

asked Dec 05 '17 at 10:03 PM in Linux

avatar image

aspartamed
115 24 29 40

(comments are locked)
10|2000 characters needed characters left

1 answer: sort voted first

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:

 [/Script/LinuxTargetPlatform.LinuxTargetSettings]
 TargetArchitecture=ArmUnknownLinuxGnueabihf

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.

more ▼

answered Dec 05 '17 at 10:13 PM

avatar image

RCL STAFF
2.7k 59 6 88

avatar image aspartamed Dec 06 '17 at 02:47 PM

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]

avatar image Flash7 Mar 31 '18 at 09:56 PM

have you found a solution for that error? I'm having the same exact issue.

avatar image RCL STAFF Apr 03 '18 at 07:59 PM

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.

(comments are locked)
10|2000 characters needed characters left
Your answer
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question