Linux build

The build process can be quite long and tedious. The F.A.Q. section contains the most common issues and solutions that appear during the installation. However, the CARLA forum is open for anybody to post unexpected issues, doubts or suggestions. There is a specific section for installation issues on Linux. Feel free to login and become part of the community.


Linux build command summary

Show command lines to build on Linux
# Make sure to meet the minimum requirements and read the documentation to understand each step.

# Install dependencies. 
sudo apt-get update &&
sudo apt-get install wget software-properties-common &&
sudo add-apt-repository ppa:ubuntu-toolchain-r/test &&
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - &&
sudo apt-add-repository "deb http://apt.llvm.org/$(lsb_release -c --short)/ llvm-toolchain-$(lsb_release -c --short)-8 main" &&
sudo apt-get update

# Additional dependencies for Ubuntu 18.04.
sudo apt-get install build-essential clang-8 lld-8 g++-7 cmake ninja-build libvulkan1 python python-pip python-dev python3-dev python3-pip libpng-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev &&
pip2 install --user setuptools &&
pip3 install --user setuptools 

# Additional dependencies for previous Ubuntu versions. 
sudo apt-get install build-essential clang-8 lld-8 g++-7 cmake ninja-build libvulkan1 python python-pip python-dev python3-dev python3-pip libpng16-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev &&
pip2 install --user setuptools &&
pip3 install --user setuptools 

# Change default clang version.
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-8/bin/clang++ 180 &&
sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-8/bin/clang 180

# Get a GitHub and a UE account, and link both. 
# Install git. 

# Build Unreal Engine 4.24.
git clone --depth=1 -b 4.24 https://github.com/EpicGames/UnrealEngine.git ~/UnrealEngine_4.24
cd ~/UnrealEngine_4.24
./Setup.sh && ./GenerateProjectFiles.sh && make

# Open the UE Editor to check everything works properly.
cd ~/UnrealEngine_4.24/Engine/Binaries/Linux && ./UE4Editor

# Clone the CARLA repository. 
git clone https://github.com/carla-simulator/carla

# Get the CARLA assets. 
cd ~/carla
./Update.sh

# Set the environment variable. 
export UE4_ROOT=~/UnrealEngine_4.24

# make the CARLA server and the CARLA client. 
make launch
make PythonAPI 

# Run an example script to test CARLA. 
cd PythonAPI/examples
python3 spawn_npc.py

Requirements

System specifics

  • Ubuntu 16.04 or later. Currently migrating to Ubuntu 18.
  • 30GB disk space. Installing all the software needed and CARLA itself will require quite a lot of space, especially Unreal Engine. Make sure to have around 30/50GB of free disk space.
  • An adequate GPU. CARLA aims for realistic simulations, so the server needs at least a 4GB GPU. A dedicated GPU is highly recommended for machine learning.
  • Two TCP ports and good internet connection. 2000 and 2001 by default. Be sure neither the firewall nor any other application block these.

Dependencies

CARLA needs many dependencies to run. Some of them are built automatically during this process, such as Boost.Python. Others are binaries that should be installed before starting the build (cmake, clang, different versions of Python and much more). In order to do so, run the commands below in a terminal window.

sudo apt-get update &&
sudo apt-get install wget software-properties-common &&
sudo add-apt-repository ppa:ubuntu-toolchain-r/test &&
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - &&
sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main" &&
sudo apt-get update

Important

The following commands differ depending on the Ubuntu version. While the only change is libpng16-dev becoming libpng-dev, the full set of commands is here twice to ease the copy.

Ubuntu 18.04.

sudo apt-get install build-essential clang-8 lld-8 g++-7 cmake ninja-build libvulkan1 python python-pip python-dev python3-dev python3-pip libpng-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev &&
pip2 install --user setuptools &&
pip3 install --user setuptools 

Previous Ubuntu versions.

sudo apt-get install build-essential clang-8 lld-8 g++-7 cmake ninja-build libvulkan1 python python-pip python-dev python3-dev python3-pip libpng16-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev &&
pip2 install --user setuptools &&
pip3 install --user setuptools 

To avoid compatibility issues between Unreal Engine and the CARLA dependencies, it is recommended to use the same compiler version and C++ runtime library to compile everything. The CARLA team uses clang-8 and LLVM's libc++. Change the default clang version to compile Unreal Engine and the CARLA dependencies.

sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-8/bin/clang++ 180 &&
sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-8/bin/clang 180

GitHub

A GitHub account will be needed, as CARLA content is organized in different repositories in there. Also, git will be used in this build guide when facilitating commands to be run in terminal.

In order to access the Unreal Engine repositories, which are set to private, create an Unreal Engine account and connect it to a GitHub account. To do so, there is a section in Unreal Engine's profile settings under the name of Connected accounts. Here is a brief explanation just in case.


Unreal Engine

The current version of CARLA runs on Unreal Engine 4.24 only. The path is irrelevant, but for the sake of this tutorial, installation will be done under ~/UnrealEngine_4.24. If the path chosen differs, remember to change it accordingly when running the commands on terminal.

Note

Alternatively, there is this guide to build UE on Linux. When consulting it, remember that CARLA will need the 4.24 release, not the latest.

Clone the content for Unreal Engine 4.24 in a local computer.

git clone --depth=1 -b 4.24 https://github.com/EpicGames/UnrealEngine.git ~/UnrealEngine_4.24

Get into said folder. Remember, this is the path where UE4.24 has been cloned.

cd ~/UnrealEngine_4.24

Make the build.

./Setup.sh && ./GenerateProjectFiles.sh && make

Unreal Engine should be installed in the system. Run Engine/Binaries/Linux/UE4Editor.sh to open the Editor and check it out.

cd ~/UnrealEngine_4.24/Engine/Binaries/Linux && ./UE4Editor

In case something went wrong, it is related with Unreal Engine There is not much CARLA can do about it. However, the build documentation provided by Unreal Engine may be helpful.


CARLA build

The system should be ready to start building CARLA. Just for clarity, a brief summary so far.

  • Minimum technical requirements to run CARLA are suitable.
  • Dependencies have been properly installed.
  • GitHub account is ready.
  • Unreal Engine 4.24 runs smooth.

Note

Downloading aria2 with sudo apt-get install aria2 will speed up the following commands.

Clone repository

The official repository of the project. Either download and extract it or clone it using the following command line.

git clone https://github.com/carla-simulator/carla

Now the latest content for the project, known as master branch in the repository, has been copied in local.

Note

The master branch contains the latest fixes and features. Stable code is inside the stable and previous CARLA versions have their own branch. Always remember to check the current branch in git with the command git branch.

Get assets

Only the assets package is yet to be donwloaded. These are stored separately to make the repository a bit lighter. CARLA cannot be built without the assets. There is a script that downloads and extracts the latest content version. The package is >3GB, so downloading it may take some time.

Get into the root carla folder. The path should correspond with the repository just cloned:

cd ~/carla

Run the script to get the assets.

./Update.sh

Important

To get the assets currently in development, visit Update CARLA and read Get development assets.

Set the environment variable

This is necessary for CARLA to find the Unreal Engine 4.24 installation folder.

export UE4_ROOT=~/UnrealEngine_4.24

The variable should be added to ~/.bashrc or ~/.profile to be set persistently session-wide. Otherwise, it will only be accessible from the current shell.

make CARLA

The last step is to finally build CARLA. There are different make commands to build the different modules. All of them run in the root CARLA folder.

Warning

Make sure to run make launch to prepare the server and make PythonAPI for the client.
Alternatively make LibCarla will prepare the CARLA library to be imported anywhere.

  • make launch compiles the server simulator and launches Unreal Engine. Press Play to start the spectator view and close the editor window to exit. Camera can be moved with WASD keys and rotated by clicking the scene while moving the mouse around.
make launch

The project may ask to build other instances such as UE4Editor-Carla.dll the first time. Agree in order to open the project. During the first launch, the editor may show warnings regarding shaders and mesh distance fields. These take some time to be loaded and the city will not show properly until then.

  • make PythonAPI compiles the API client, necessary to grant control over the simulation. It is only needed the first time. Remember to run it again when updating CARLA. Scripts will be able to run after this command is executed. The following example will spawn some life into the town.
make PythonAPI && cd PythonAPI/examples && python3 spawn_npc.py

Important

If the simulation is running at very low FPS rates, go to Edit/Editor preferences/Performance in the UE editor and disable Use less CPU when in background.

Now CARLA is ready to go. Here is a brief summary of the most useful make commands available.

Command Description
make help Prints all available commands.
make launch Launches CARLA server in Editor window.
make PythonAPI Builds the CARLA client.
make package Builds CARLA and creates a packaged version for distribution.
make clean Deletes all the binaries and temporals generated by the build system.
make rebuild make clean and make launch both in one command.


Keep reading this section to learn how to update the build or take some first steps in CARLA.