EpicGames has a neat little QuickStart Guide for getting UnrealEngine up and running on Linux, but you might still run into some gotchas. Unfortunately, the new Docs aren't accepting PRs (yet?), so here's a quick braindump of what I've run into.
I was following the guide mentioned above on a fresh install of Pop!_OS 19.04.
By all means, read the official Linux Quick Start first. After you're done, continue here.
If you're lucky and use UE >= 4.20 check out the Native Toolchain provided by Epic Games.
Various problems I ran into
Problem 1: UE can't be built with clang-8
make i noticed that pop comes installed with
clang-8 which is currently unsupported by UE.
You can easily solve this by installing
clang-7 and setting it up as an alternative like so:
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-7 100 --slave /usr/bin/clang++ clang++ /usr/bin/clang++-7 sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-8 100 --slave /usr/bin/clang++ clang++ /usr/bin/clang++-8
This results in
clang++ following the version of
clang so you can easily switch between your installs by running
sudo update-alternatives --config clang, which in my case looks like this:
There are 2 choices for the alternative clang (providing /usr/bin/clang). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/clang-7 100 auto mode 1 /usr/bin/clang-7 100 manual mode 2 /usr/bin/clang-8 100 manual mode
I do this for a lot of tools and SDKs and it works beautifully.
If you find yourself changing alternatives often, register yourself an alias in
.bashrc like so:
alias change-clang="sudo update-alternatives --config clang.
Problem 2: Fresh install of QTCreator 5 + QT5
The quick start guide jumps from compiling the engine straight into the project setup inside QTCreator. However, only installing QTCreator via apt is not enough - Run the official QT5 setup instead, which comes with all necessary dependencies (qt 5.12.3 at the time of writing).
Problem 3: clang error: invalid linker name in argument '-fuse-ld=lld'
You're missing LLD on your system.
SetupToolchain.sh in the engines root folder or install
lld via your package manager.
That's basically it. If you're lucky you won't even need to read this post!
All in all, it was surprisingly easy considering that Linux isn't exactly a first class citizen for game development yet.
What comes next is setting up a CI environment, but I'll save that for another post.