Skip to content

SUMO compilation

David Mansolino edited this page Nov 7, 2018 · 20 revisions

This page explains how to recompile the SUMO dependency on every platforms.

Get Sumo 0.30 from precompiled package and create the target package.

https://sourceforge.net/projects/sumo/files/sumo

Linux

Reference: http://sumo.dlr.de/wiki/Installing

# Recommended: sudo apt-get autoremove libxerces-c3.1 libxerces-c-dev libfox-1.6-0 libfox-1.6-dev
sudo add-apt-repository ppa:sumo/stable
sudo apt-get update
sudo apt-get install sumo sumo-tools

Note: The following additional packages will be installed:
  fastjar jarwrapper libaec0 libarmadillo6 libarpack2 libblas-common libblas3 libdap17v5
  libdapclient6v5 libepsilon1 libfox-1.6-0 libfreexl1 libgdal1i libgeos-3.5.0 libgeos-c1v5
  libgfortran3 libgl2ps0 libhdf4-0-alt libhdf5-10 libjs-openlayers libkmlbase1 libkmldom1
  libkmlengine1 liblapack3 libminizip1 libmysqlclient20 libnetcdf11 libodbc1 libogdi3.2 libpq5
  libproj9 libspatialite7 libsuperlu4 libsz2 liburiparser1 libxerces-c3.1 mysql-common odbcinst
  odbcinst1debian2 proj-bin proj-data

cd $HOME/software
mkdir sumo
cd sumo

cp /usr/bin/duarouter .
cp /usr/bin/netconvert .
cp /usr/bin/netedit .
cp /usr/bin/sumo .
cp /usr/bin/sumo-gui .

mkdir lib

cp /usr/lib/x86_64-linux-gnu/libFOX-1.6.so.0* lib/
cp /usr/lib/libgdal.so.1* lib/
cp /usr/lib/libgl2ps.so.0* lib/
cp /usr/lib/x86_64-linux-gnu/libproj.so.9* lib/
cp /usr/lib/x86_64-linux-gnu/libxerces-c-3.1.so* lib/

cp /usr/lib/libarmadillo.so.6* lib/
cp /usr/lib/x86_64-linux-gnu/libdapclient.so.6* lib/
cp /usr/lib/x86_64-linux-gnu/libdap.so.17* lib/
cp /usr/lib/libdfalt.so.0* lib/
cp /usr/lib/x86_64-linux-gnu/libepsilon.so.1* lib/
cp /usr/lib/x86_64-linux-gnu/libfreexl.so.1* lib/
cp /usr/lib/x86_64-linux-gnu/libgeos_c.so.1* lib/
cp /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.10* lib/
cp /usr/lib/x86_64-linux-gnu/libkmlbase.so.1* lib/
cp /usr/lib/x86_64-linux-gnu/libkmldom.so.1* lib/
cp /usr/lib/x86_64-linux-gnu/libkmlengine.so.1* lib/
cp /usr/lib/libmfhdfalt.so.0* lib/
cp /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20* lib/
cp /usr/lib/x86_64-linux-gnu/libnetcdf.so.11* lib/
cp /usr/lib/x86_64-linux-gnu/libodbcinst.so.2* lib/
cp /usr/lib/x86_64-linux-gnu/libodbc.so.2* lib/
cp /usr/lib/libogdi.so.3.2* lib/
cp /usr/lib/x86_64-linux-gnu/libpq.so.5* lib/
cp /usr/lib/x86_64-linux-gnu/libspatialite.so.7* lib/

cp /usr/lib/libarpack.so.2* lib/
cp /usr/lib/libblas.so.3* lib/
cp /usr/lib/x86_64-linux-gnu/libgeos-3.5.0.so* lib/
cp /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl.so.10* lib/
cp /usr/lib/liblapack.so.3* lib/
cp /usr/lib/x86_64-linux-gnu/libminizip.so.1* lib/
cp /usr/lib/x86_64-linux-gnu/libsuperlu.so.4* lib/
cp /usr/lib/x86_64-linux-gnu/libsz.so.2* lib/
cp /usr/lib/x86_64-linux-gnu/liburiparser.so.1* lib/

cp /usr/lib/x86_64-linux-gnu/libaec.so.0* lib/
cp /usr/lib/x86_64-linux-gnu/libgfortran.so.3* lib/

cp -R /usr/share/sumo/tools/traci .
cp -R /usr/share/sumo/tools/sumolib .

sudo apt-get autoremove sumo sumo-tools

cd $HOME/software
tar -cvjSf sumo-0.28.0.tar.bz2 sumo

From Ubuntu 14.04:

sudo apt-get install libxerces-c-dev libfox-1.6-dev libproj-dev libgdal-dev libxerces-c3.1 libfox-1.6-0

./configure --enable-static=yes --enable-shared=no --without-ffmpeg
make -jX

cd bin
cp /usr/lib/libarmadillo.so.4.200.0 .
cp /usr/lib/libarpack.so.2.0.0 .
cp /usr/lib/libblas/libblas.so.3.0 .
cp /usr/lib/x86_64-linux-gnu/libdap.so.11.5.0 .
cp /usr/lib/x86_64-linux-gnu/libdapclient.so.3.2.0 .
cp /usr/lib/libdfalt.so.0.0.0 .
cp /usr/lib/x86_64-linux-gnu/libepsilon.so.1.0.0 .
cp /usr/lib/x86_64-linux-gnu/libFOX-1.6.so.0.0.49 .
cp /usr/lib/x86_64-linux-gnu/libfreexl.so.1.0.0 .
cp /usr/lib/libgdal.so.1.17.1 .
cp /usr/lib/libgeos-3.4.2.so .
cp /usr/lib/libgeos_c.so.1.8.2 .
cp /usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0 .
cp /usr/lib/x86_64-linux-gnu/libgif.so.4.1.6 .
cp /usr/lib/x86_64-linux-gnu/libhdf5.so.7.0.0 .
cp /usr/lib/x86_64-linux-gnu/libhdf5_hl.so.7.0.0 .
cp /usr/lib/x86_64-linux-gnu/libkmlbase.so.0.0.0 .
cp /usr/lib/x86_64-linux-gnu/libkmldom.so.0.0.0 .
cp /usr/lib/x86_64-linux-gnu/libkmlengine.so.0.0.0 .
cp /usr/lib/lapack/liblapack.so.3.0 .
cp /usr/lib/libmfhdfalt.so.0.0.0 .
cp /usr/lib/x86_64-linux-gnu/libminizip.so.0.0.0 .
cp /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18.0.0 .
cp /usr/lib/libnetcdf.so.7.1.1 .
cp /usr/lib/x86_64-linux-gnu/libodbc.so.1.0.0 .
cp /usr/lib/x86_64-linux-gnu/libodbcinst.so.1.0.0 .
cp /usr/lib/libogdi.so.3.2 .
cp /usr/lib/x86_64-linux-gnu/libpoppler.so.44.0.0 .
cp /usr/lib/libpq.so.5.6 .
cp /usr/lib/libproj.so.0.7.0 .
cp /usr/lib/x86_64-linux-gnu/libspatialite.so.5.1.0 .
cp /usr/lib/liburiparser.so.1.0.10 .
cp /usr/lib/x86_64-linux-gnu/libxerces-c-3.1.so .

ln -s libFOX-1.6.so.0.0.49 libFOX-1.6.so.0
ln -s libproj.so.0.7.0 libproj.so.0
ln -s libgdal.so.1.17.1 libgdal.so.1
ln -s libarmadillo.so.4.200.0 libarmadillo.so.4
ln -s libpoppler.so.44.0.0 libpoppler.so.44
ln -s libfreexl.so.1.0.0 libfreexl.so.1
ln -s libgeos_c.so.1.8.2 libgeos_c.so.1
ln -s libepsilon.so.1.0.0 libepsilon.so.1
ln -s libodbc.so.1.0.0 libodbc.so.1
ln -s libodbcinst.so.1.0.0 libodbcinst.so.1
ln -s libkmldom.so.0.0.0 libkmldom.so.0
ln -s libkmlbase.so.0.0.0 libkmlbase.so.0
ln -s libkmlengine.so.0.0.0 libkmlengine.so.0
ln -s libnetcdf.so.7.1.1 libnetcdf.so.7
ln -s libhdf5.so.7.0.0 libhdf5.so.7
ln -s libmfhdfalt.so.0.0.0 libmfhdfalt.so.0
ln -s libdfalt.so.0.0.0 libdfalt.so.0
ln -s libgif.so.4.1.6 libgif.so.4
ln -s libpq.so.5.6 libpq.so.5
ln -s libdapclient.so.3.2.0 libdapclient.so.3
ln -s libdap.so.11.5.0 libdap.so.11
ln -s libspatialite.so.5.1.0 libspatialite.so.5
ln -s libmysqlclient.so.18.0.0 libmysqlclient.so.18
ln -s libblas.so.3.0 libblas.so.3
ln -s liblapack.so.3.0 liblapack.so.3
ln -s libarpack.so.2.0.0 libarpack.so.2
ln -s liburiparser.so.1.0.10 liburiparser.so.1
ln -s libminizip.so.0.0.0 libminizip.so.0
ln -s libhdf5_hl.so.7.0.0 libhdf5_hl.so.7
ln -s libgfortran.so.3.0.0 libgfortran.so.3

mkdir sumo-0.30-linux64

cp -r bin sumo-0.30-linux64/bin
cp -r data sumo-0.30-linux64/data

mkdir sumo-0.30-linux64/tools

cp -r tools/traci sumo-0.30-linux64/tools/traci
cp -r tools/sumolib sumo-0.30-linux64/tools/sumolib 
cp tools/randomTrips.py sumo-0.30-linux64/tools
cp tools/route2trips.py sumo-0.30-linux64/tools

tar -czvf sumo-0.30-linux64.tar.gz sumo-0.30-linux64

Mac

Reference: http://sumo.dlr.de/wiki/Installing/MacOS_Build_w_Homebrew

Download Sumo sources (sumo-src-0.30.0.tar.gz) in $HOME/software/sumo-0.30.0 from:

https://sourceforge.net/projects/sumo/files/sumo/version%200.30.0/

cd $HOME/software/sumo-0.30.0

brew update
brew install Caskroom/cask/xquartz
brew install gdal
brew install proj
brew install xerces-c
brew install homebrew/x11/fox
brew uninstall --ignore-dependencies  python # python is a dependency of gdal, we prefer to use the Python of the system

export CPPFLAGS="$CPPFLAGS -I/opt/X11/include/"
export LDFLAGS="-L/opt/X11/lib"
./configure CXX=clang++ --with-xerces=/usr/local --with-proj-gdal=/usr/local
make -jX

mkdir sumo-0.30-mac
cp -r bin sumo-0.30-mac/bin
cp -r data sumo-0.30-mac/data

mkdir sumo-0.30-mac/tools

cp -r tools/traci sumo-0.30-mac/tools/traci
cp -r tools/sumolib sumo-0.30-mac/tools/sumolib 
cp tools/randomTrips.py sumo-0.30-mac/tools
cp tools/route2trips.py sumo-0.30-mac/tools

# find dependencies: otool -L duarouter netedit netconvert sumo sumo-gui | grep /usr/local | sed -e 's/ (.*//;s/^\s*//' | sort | uniq
cp /usr/local/opt/fox/lib/libFOX-1.6.0.dylib sumo-0.30-mac/bin
cp /usr/local/opt/freetype/lib/libfreetype.6.dylib sumo-0.30-mac/bin
cp /usr/local/opt/jpeg/lib/libjpeg.9.dylib sumo-0.30-mac/bin
cp /usr/local/opt/libpng/lib/libpng16.16.dylib sumo-0.30-mac/bin
cp /usr/local/opt/libtiff/lib/libtiff.5.dylib sumo-0.30-mac/bin
cp /usr/local/opt/proj/lib/libproj.12.dylib sumo-0.30-mac/bin
cp /usr/local/opt/xerces-c/lib/libxerces-c-3.1.dylib sumo-0.30-mac/bin
cp /usr/local/opt/gdal/lib/libgdal.1.dylib sumo-0.30-mac/bin
cp /usr/local/opt/json-c/lib/libjson-c.2.dylib sumo-0.30-mac/bin
cp /usr/local/opt/freexl/lib/libfreexl.1.dylib sumo-0.30-mac/bin
cp /usr/local/opt/geos/lib/libgeos_c.1.dylib sumo-0.30-mac/bin
cp /usr/local/opt/giflib/lib/libgif.7.dylib sumo-0.30-mac/bin
cp /usr/local/opt/libgeotiff/lib/libgeotiff.2.dylib sumo-0.30-mac/bin
cp /usr/local/opt/libspatialite/lib/libspatialite.7.dylib sumo-0.30-mac/bin
cp /usr/local/opt/sqlite/lib/libsqlite3.0.dylib sumo-0.30-mac/bin
cp /usr/local/opt/pcre/lib/libpcre.1.dylib sumo-0.30-mac/bin
cp /usr/local/opt/libxml2/lib/libxml2.2.dylib sumo-0.30-mac/bin
cp /usr/local/opt/liblwgeom/lib/liblwgeom-2.1.5.dylib sumo-0.30-mac/bin
cp /usr/local/Cellar/geos/3.6.2/lib/libgeos-3.6.2.dylib sumo-0.30-mac/bin
chmod u+w sumo-0.30-mac/bin/*dylib*

# create deps.py as described bellow
cd sumo-0.30-mac/bin
python deps.py

cd ../..
tar -czvf sumo-0.30-mac.tar.gz sumo-0.30-mac
# File: deps.py
from subprocess import call
import os

executables = [
    "sumo",
    "sumo-gui",
    "netconvert",
    "netedit",
    "duarouter"
]

libraries = [
    "/usr/local/opt/fox/lib/libFOX-1.6.0.dylib",
    "/usr/local/opt/freetype/lib/libfreetype.6.dylib",
    "/usr/local/opt/jpeg/lib/libjpeg.9.dylib",
    "/usr/local/opt/libpng/lib/libpng16.16.dylib",
    "/usr/local/opt/libtiff/lib/libtiff.5.dylib",
    "/usr/local/opt/proj/lib/libproj.12.dylib",
    "/usr/local/opt/xerces-c/lib/libxerces-c-3.1.dylib",
    "/usr/local/opt/gdal/lib/libgdal.1.dylib",
    "/usr/local/opt/json-c/lib/libjson-c.2.dylib",
    "/usr/local/opt/freexl/lib/libfreexl.1.dylib",
    "/usr/local/opt/geos/lib/libgeos_c.1.dylib",
    "/usr/local/opt/giflib/lib/libgif.7.dylib",
    "/usr/local/opt/libgeotiff/lib/libgeotiff.2.dylib",
    "/usr/local/opt/libspatialite/lib/libspatialite.7.dylib",
    "/usr/local/opt/sqlite/lib/libsqlite3.0.dylib",
    "/usr/local/opt/pcre/lib/libpcre.1.dylib",
    "/usr/local/opt/libxml2/lib/libxml2.2.dylib",
    "/usr/local/opt/liblwgeom/lib/liblwgeom-2.1.5.dylib",
    "/usr/local/Cellar/geos/3.6.2/lib/libgeos-3.6.2.dylib"
]

def command(cmd):
    print cmd
    call(cmd.split())

for lA in libraries:
    lAName = os.path.basename(lA)
    command("install_name_tool -id @loader_path/%s %s" % (lAName, lAName))
    for lB in libraries:
        lBName = os.path.basename(lB)
        command("install_name_tool -change %s @loader_path/%s %s" % (lB, lBName, lAName))

for executable in executables:
    for l in libraries:
        lName = os.path.basename(l)
        command("install_name_tool -change %s @loader_path/%s %s" % (l, lName, executable))

Windows

Download Sumo windows 64bits precompiled package (sumo-win64-0.30.0.zip) and extract it in $HOME/software/sumo-0.30.0 from:

https://sourceforge.net/projects/sumo/files/sumo/version%200.30.0/

cd $HOME/software/sumo-win64-0.30.0/sumo-0.30.0
mkdir sumo-0.30-windows

cp -r bin sumo-0.30-windows/bin
cp -r data sumo-0.30-windows/data

mkdir sumo-0.30-windows/tools

cp -r tools/traci sumo-0.30-windows/tools/traci
cp -r tools/sumolib sumo-0.30-windows/tools/sumolib 
cp tools/randomTrips.py sumo-0.30-windows/tools
cp tools/route2trips.py sumo-0.30-windows/tools

zip -r sumo-0.30-windows.zip sumo-0.30-windows

Finally upload the file on the ftp.

Clone this wiki locally