carla/Docs/how_to_build_on_linux.md

4.5 KiB

How to build CARLA on Linux

---

!!! note CARLA requires Ubuntu 16.04 or later.

Install the build tools and 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/xenial/ llvm-toolchain-xenial-7 main"
sudo apt-get update
sudo apt-get install build-essential clang-7 lld-7 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
pip2 install --user setuptools
pip3 install --user setuptools

!!! tip For Ubuntu 18.04, change libpng16-dev to libpng-dev from the previous example.

To avoid compatibility issues between Unreal Engine and the CARLA dependencies, the best configuration is to compile everything with the same compiler version and C++ runtime library. We use clang 6.0 and LLVM's libc++. We recommend to change your default clang version to compile Unreal Engine and the CARLA dependencies

sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-7/bin/clang++ 170
sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-7/bin/clang 170

Build Unreal Engine


!!! note Unreal Engine repositories are set to private. In order to gain access you need to add your GitHub username when you sign up at www.unrealengine.com.

Download and compile Unreal Engine 4.22. Here we will assume you install it at ~/UnrealEngine_4.22, but you can install it anywhere, just replace the path where necessary.

git clone --depth=1 -b 4.22 https://github.com/EpicGames/UnrealEngine.git ~/UnrealEngine_4.22
cd ~/UnrealEngine_4.22
./Setup.sh && ./GenerateProjectFiles.sh && make

Check Unreal's documentation "Building On Linux" if any of the steps above fail.

Build CARLA


Clone or download the project from our GitHub repository

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

Note that the master branch contains the latest fixes and features, for the latest stable code may be best to switch to the stable branch.

Now you need to download the assets package, to do so we provide a handy script that downloads and extracts the latest version (note that this package is >3GB, this step might take some time depending on your connection)

!!! Tip Optionally you can download aria2 (with sudo apt-get install aria2) so the following command will take advantage of it and will run quite faster.

./Update.sh

For CARLA to find your Unreal Engine's installation folder you need to set the following environment variable

export UE4_ROOT=~/UnrealEngine_4.22

You can also add this variable to your ~/.bashrc or ~/.profile.

Now that the environment is set up, you can use make to run different commands and build the different modules

make launch     # Compiles the simulator and launches Unreal Engine's Editor.
make PythonAPI  # Compiles the PythonAPI module necessary for running the Python examples.
make package    # Compiles everything and creates a packaged version able to run without UE4 editor.
make help       # Print all available commands.

Updating CARLA


Every new release of CARLA, we release too a new package with the latest changes in the CARLA assets. To download the latest version and recompile CARLA, run

make clean
git pull
./Update.sh
make launch

Assets repository (development only)

Our 3D assets, models, and maps have also a publicly available git repository. We regularly push latest updates to this repository. However, using this version of the content is only recommended to developers, as we often have work in progress maps and models.

Handling this repository requires git-lfs installed in your machine. Clone this repository to "Unreal/CarlaUE4/Content/Carla"

git lfs clone https://bitbucket.org/carla-simulator/carla-content Unreal/CarlaUE4/Content/Carla

It is recommended to clone with "git lfs clone" as this is significantly faster in older versions of git.