Installing/Linux Build

From Sumo
Jump to: navigation, search

This document describes how to install SUMO on Linux from sources. If you don't want to extend SUMO, but merely use it, you might want to download one of our pre-built binary packages instead.

To be able to run SUMO on Linux, just follow these four steps:

  1. Install all of the required tools and libraries (it is recommended to use cmake)
  2. Get the source code
  3. Build the SUMO binaries
  4. Install the SUMO binaries to another path (optional)

Each of these steps is outlined below.

Installing required tools and libraries

Since revision 25121 building SUMO requires a C++11 enabled compiler
  • For the build infrastructure you will need a moderately recent g++ (4.8 will do) or clang++ together with cmake (recommended) or the autotools (autoconf / automake).
  • The libraries needed are the Fox Toolkit in version 1.6.x, Xerces-C, Proj and GDAL. To compile you will need the devel versions of all packages. For openSUSE this means installing libxerces-c-devel, libproj-devel, libgdal-devel, and fox16-devel. There are some platform specific and manual build instructions for the libraries
  • Optionally you may want to add ffmpeg-devel (for video output), libOpenSceneGraph-devel (for the experimental 3D GUI) and python-devel (for running TraCI pythons scripts without a socket connection)

Getting the source code

release version or nightly tarball

Download sumo-src-1.0.1.tar.gz or

tar xzf sumo-src-<version>.tar.gz
cd sumo-<version>/

repository checkout

The following commands should be issued:

git clone --recursive
cd sumo
git fetch origin refs/replace/*:refs/replace/*

The additional fetch of the replacements is necessary to get a full local project history.

Definition of SUMO_HOME

Before compiling is advisable (essential if you want to use Clang) to define the environment variable SUMO_HOME. Assuming that you placed SUMO in the folder "/home/<user>/sumo-<version>", if you want to define only for the current session, type in the console

export SUMO_HOME="/home/<user>/sumo-<version>"

If you want to define for all sessions (i.e. for every time that you run your Linux distribution), go to your HOME folder, and find one of the next three files (depending of your Linux distribution): .bash_profile, .bash_login or .profile (Note that these files can be hidden). Then edit the file, add the line from above at the end and restart your session.

You can check that SUMO_HOME was successfully set if you type


and console shows "/home/<user>/sumo-<version>"

Building the SUMO binaries with cmake (recommended)

To build with cmake version 3 or higher is required.

Create a build folder for cmake (in the sumo root folder)

 mkdir build/cmake-build
 cd build/cmake-build

to build sumo with the full set of available options just like GDAL and OpenSceneGraph support (if the libraries are installed) just run:

 cmake ../..

to build the debug version just use

 cmake -D CMAKE_BUILD_TYPE=Debug ../..
On some platforms the required cmake executable is called cmake3.

after this is finished, run

 make -j 8

(8 denotes here the number of parallel build jobs which makes the build a lot faster)

Other useful cmake options:

  • -D PROFILING=ON enable profiling instrumentation for gprof (gcc build only)
  • -D COVERAGE=ON enable coverage instrumentation for lcov (gcc build only)
  • -D CHECK_OPTIONAL_LIBS=OFF disable all optional libraries (only include EPL compatible licensed code)
  • -D PROJ_LIBRARY= disable PROJ
  • -D FOX_CONFIG= disable FOX toolkit (GUI and multithreading)

Building the SUMO binaries with autotools (legacy)

Please be aware that recently added features such as libsumo are only available with the cmake build.

To build from a checkout the GNU autotools are needed. The call to the autotools is hidden in Makefile.cvs.

make -f Makefile.cvs
./configure [options]

If you built the required libraries manually, you may need to tell the configure script where you installed them (e.g. --with-xerces=...). Please see the above instructions on installing required tools and libraries to find out how to do that.

Other common options to ./configure include --prefix=$HOME (so installing SUMO means copying the files somewhere in your home directory), --enable-debug (to build a version of SUMO that's easier to debug), and --with-python which enables the direct linking of python.

For additional options please see

./configure --help

After doing make you will find all binaries in the bin subdir without the need for installation. You may of course do a make install to your intended destination as well, see below.

Building with clang

If you want to use a different compiler (just for the fun of it or because it has additional features) you can enable it at configure time. Our current clang configuration for additional static code checking enables the following CXXFLAGS:

-stdlib=libstdc++ -fsanitize=undefined,address,integer,unsigned-integer-overflow -fno-omit-frame-pointer -fsanitize-blacklist=$SUMO_HOME/build/clang_sanitize_blacklist.txt

You may of course leave out all the sanitizer-checks you don't want but the stdlib option has to be set. The blacklist filters out a known bug in the cstdlib. For details see the clang documentation.

The current CMake configuration already contains this for the debug build, so for building with CMake and clang just change to your build dir and use

CXX=clang++ cmake -DCMAKE_BUILD_TYPE=Debug ../..

For the autotools it looks like this:

./configure CXX=clang++ CXXFLAGS="-stdlib=libstdc++ -fsanitize=undefined,address,integer,unsigned-integer-overflow -fno-omit-frame-pointer -fsanitize-blacklist=$SUMO_HOME/build/clang_sanitize_blacklist.txt"

Installing the SUMO binaries

This (optional) step will copy the SUMO binaries to another path, so that you can delete all source and intermediate files afterwards. If you do not want (or need) to do that, you can simply skip this step and run SUMO from the bin subfolder (bin/sumo-gui and bin/sumo).

If you want to install the SUMO binaries, run

make install


Problems with aclocal.m4 and libtool

If you're experiencing problems with aclocal.m4 definitions and see

 "You should recreate aclocal.m4"

during the build, you should run the following commands:

libtoolize --force
./configure [your configure options]
make [install]

Unresolved references to openGL-functions

Build reports unresolved references to openGL-functions, saying things such as

"./utils/glutils/libglutils.a(GLHelper.o): In function
`GLHelper::drawOutlineCircle(float, float, int, float, float)':
undefined reference to `glEnd'"

SUMO needs FOX-toolkit to be build with openGL-support enabled. Do this by compiling FOX-toolkit as following:

tar xzf fox-1.4.34.tar.gz
cd fox-1.4.34
./configure --with-opengl=yes --prefix=$HOME && make install

Further comment from Michael Behrisch ([sumo-user], 4.4.2007): Probably there is something wrong with your OpenGL installation. Make sure you have the and which are most likely symbolic links to or something like this. They should appear in /usr/lib and case does matter (so "" won't do).

Problems with the socket subsystem


recv ./foreign/tcpip/libtcpip.a(socket.o)  (symbol belongs to implicit dependency /usr/lib/


ld cannot find an existing library (Fedora-23)


/usr/bin/ld: cannot find -lfreetype
ls -lah /usr/lib64/libfreetype*
 lrwxrwxrwx. 1 root root   21 Jul 28 15:54 /usr/lib64/ ->
 lrwxr-xr-x. 1 root root 689K Jul 28 15:54 /usr/lib64/

Solution: Install the dev package; for fedora:

sudo yum install freetype-devel

For details see stackoverflow discussion.

Additional notes for Cygwin users

At the moment GUI building is still troublesome. It depends whether you want to use the X-Server or native Windows GUI. We tried native Windows GUI only and had to change the installed such that it contains

dependency_libs=' -lgdi32 -lglaux -ldl -lcomctl32 -lwsock32 -lwinspool -lmpr
-lpthread -lpng /usr/lib/ /usr/lib/ -lz -lbz2 -lopengl32 -lglu32'

Your mileage may vary.