# Linux build This guide details how to build CARLA from source on Linux. There are two parts. Part one details system requirements and installations of required software, and part two details how to actually build and run CARLA. The build process is long (4 hours or more) and involves several kinds of software. It is highly recommended to read through the guide fully before starting. If you come across errors or difficulties then have a look at the **[F.A.Q.](build_faq.md)** page which offers solutions for the most common complications. Alternatively, use the [CARLA forum](https://github.com/carla-simulator/carla/discussions) to post any queries you may have. - [__Part One: Prerequisites__](#part-one-prerequisites) - [System requirements](#system-requirements) - [Software requirements](#software-requirements) - [Unreal Engine](#unreal-engine) - [__Part Two: Build CARLA__](#part-two-build-carla) - [Clone the CARLA repository](#clone-the-carla-repository) - [Get assets](#get-assets) - [Set Unreal Engine environment variable](#set-unreal-engine-environment-variable) - [Build CARLA](#build-carla) - [Other make commands](#other-make-commands) --- ## Part One: Prerequisites ### System requirements * __Ubuntu 18.04.__ CARLA provides support for previous Ubuntu versions up to 16.04. **However** proper compilers are needed for Unreal Engine to work properly. Dependencies for Ubuntu 18.04 and previous versions are listed separately below. Make sure to install the ones corresponding to your system. * __130 GB disk space.__ Carla will take around 31 GB and Unreal Engine will take around 91 GB so have about 130 GB free to account for both of these plus additional minor software installations. * __An adequate GPU.__ CARLA aims for realistic simulations, so the server needs at least a 6 GB GPU although 8 GB is recommended. A dedicated GPU is highly recommended for machine learning. * __Two TCP ports and good internet connection.__ 2000 and 2001 by default. Make sure that these ports are not blocked by firewalls or any other applications. !!! Warning __If you are upgrading from CARLA 0.9.12 to 0.9.13__: you must first upgrade the CARLA fork of the UE4 engine to the latest version. See the [__Unreal Engine__](#unreal-engine) section for details on upgrading UE4 ### Software requirements CARLA requires many different kinds of software to run. Some are built during the CARLA build process itself, such as *Boost.Python*. Others are binaries that should be installed before starting the build (*cmake*, *clang*, different versions of *Python*, etc.). To install these requirements, run the following commands: ```sh 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 ``` !!! Warning The following commands depend on your Ubuntu version. Make sure to choose accordingly. To avoid compatibility issues between Unreal Engine and the CARLA dependencies, use the same compiler version and C++ runtime library to compile everything. The CARLA team uses clang-8 (or clang-10 in Ubuntu 20.04) and LLVM's libc++. Change the default clang version to compile Unreal Engine and the CARLA dependencies. __Ubuntu 20.04__. ```sh sudo apt-add-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal main" sudo apt-get install build-essential clang-10 lld-10 g++-7 cmake ninja-build libvulkan1 python python-dev python3-dev python3-pip libpng-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev git sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-10/bin/clang++ 180 && sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-10/bin/clang 180 ``` __Ubuntu 18.04__. ```sh 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 git 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 ``` __Previous Ubuntu versions__. ```sh 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 git 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 ``` __All Ubuntu systems__. Starting with CARLA 0.9.12, users have the option to install the CARLA Python API using `pip` or `pip3`. Version 20.3 or higher is required. To check if you have a suitable version, run the following command: ```sh # For Python 3 pip3 -V # For Python 2 pip -V ``` If you need to upgrade: ```sh # For Python 3 pip3 install --upgrade pip # For Python 2 pip install --upgrade pip ``` You must install the following Python dependencies: ```sh pip install --user setuptools && pip3 install --user -Iv setuptools==47.3.1 && pip install --user distro && pip3 install --user distro && pip install --user wheel && pip3 install --user wheel auditwheel ``` --- ## Unreal Engine Starting with version 0.9.12, CARLA uses a modified fork of Unreal Engine 4.26. This fork contains patches specific to CARLA. Be aware that to download this fork of Unreal Engine, __you need to have a GitHub account linked to Unreal Engine's account__. If you don't have this set up, please follow [this guide](https://www.unrealengine.com/en-US/ue4-on-github) before going any further. __1.__ Clone the content for CARLA's fork of Unreal Engine 4.26 to your local computer: ```sh git clone --depth 1 -b carla https://github.com/CarlaUnreal/UnrealEngine.git ~/UnrealEngine_4.26 ``` __2.__ Navigate into the directory where you cloned the repository: ```sh cd ~/UnrealEngine_4.26 ``` __3.__ Make the build. This may take an hour or two depending on your system. ```sh ./Setup.sh && ./GenerateProjectFiles.sh && make ``` __4.__ Open the Editor to check that Unreal Engine has been installed properly. ```sh cd ~/UnrealEngine_4.26/Engine/Binaries/Linux && ./UE4Editor ``` --- ## Part Two: Build CARLA !!! Note Downloading aria2 with `sudo apt-get install aria2` will speed up the following commands. ### Clone the CARLA repository
The button above will take you to the official repository of the project. Either download from there and extract it locally or clone it using the following command: ```sh git clone https://github.com/carla-simulator/carla ``` !!! Note The `master` branch contains the current release of CARLA with the latest fixes and features. Previous CARLA versions are tagged with the version name. Always remember to check the current branch in git with the command `git branch`. ### Get assets You will need to download the __latest__ assets to work with the current version of CARLA. We provide a script to automate this process. To use the script, run the following command in the CARLA root folder: ```sh ./Update.sh ``` The assets will be downloaded and extracted to the appropriate location. !!! Important To download the assets currently in development, visit [Update CARLA](build_update.md#get-development-assets) and read __Get development assets__. To download the assets for a __specific version__ of CARLA: 1. From the root CARLA directory, navigate to `\Util\ContentVersions.txt`. This document contains the links to the assets for all CARLA releases. 2. Extract the assets in `Unreal\CarlaUE4\Content\Carla`. If the path doesn't exist, create it. 3. Extract the file with a command similar to the following: ```sh tar -xvzf