Сборка проекта OSRM - sayr777/osrm-backend GitHub Wiki
OSRM проект доступен через Git. Для сборки используется CMake.
Для загрузки с Git используйте следующие команды:
git clone https://github.com/Project-OSRM/osrm-backend.git
cd osrm-backend
Если Вы желаете собрать специфичный релиз (необязательно), получите список всех тегов командой git tag -l
, а затем просмотрите описание нужного тега с помощью команды git checkout tags/<tag_name>
.
Исходные коды проекта OSRM расположены здесь.
Для загрузки исходных кодов выполните следующие команды (X.Y.Z замените на версию последнего релиза):
wget https://github.com/Project-OSRM/osrm-backend/archive/vX.Y.Z.tar.gz
tar -xzf vX.Y.Z.tar.gz
cd osrm-backend-X.Y.Z
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .
sudo cmake --build . --target install
CMake имеет несколько необязательных параметров.
-DCMAKE_BUILD_TYPE=Debug
- компиляция в режиме отладки. Необходимо для разработчиков.
-DBUILD_TOOLS=1
- компиляция любыми дополнительными инструментами. Как правило не требуется.
-DENABLE_JSON_LOGGING=1
- компиляция в режиме расширенной отладки с сообщениями JSON. Необходимо для разработчиков.
Смотри эти требования к версии компилятора для CentOS/RHEL.
Смотри эти требования к ОС Fedora и Lua 5.3.
Смотри эту информацию об особенностях установки osrm-backend на ОС Centos 6.
Для установки проекта на ОС Red Hat Enterprise Linux, Fedora или CentOS вы должны подключить EPEL репозитарии, для того чтобы удовлетворить зависимости.
Перед установкой проекта на ОС Fedora 14 Вы должны сперва установить следующие пакеты:
yum install gcc-c++ libxml2-devel stxxl-devel boost-devel bzip2-devel cmake
Перед установкой проекта на ОС Fedora 15 Вы должны сперва установить следующие пакеты:
yum install gcc-c++ libxml2-devel stxxl-devel boost-devel boost-regex bzip2-devel libzip-devel
Перед установкой проекта на ОС Fedora 20 Вы должны сперва установить следующие пакеты:
sudo yum install git cmake gcc-c++
sudo yum install libxml2-devel boost-devel boost-regex bzip2-devel \
libzip-devel stxxl-devel \
lua.x86_64 lua-devel.x86_64 luajit.x86_64 luajit-devel.x86_64 \
luabind.x86_64 luabind-devel.x86_64 expat expat-devel tbb tbb-devel
В заключении выполните установку Project-OSRM:
git clone https://github.com/DennisOSRM/Project-OSRM.git
mkdir –p Project-OSRM/build
cd Project-OSRM/build
cmake ..
make
sudo make install
Перед установкой проекта на ОС Cent OS 6 / RHEL 6 Вы сперва должны установить следующие пакеты:
yum install gcc-c++ libxml2-devel boost-devel bzip2-devel cmake
Библиотека stxxl-devel не доступна в репозитариях этих дитсрибутивов (на момент написания страницы) и должна быть установлена отдельно. Описание процесса установки Вы можете найти в отдельной документации.
После установки Вы должны прописать путь до места размещения данной библиотеки когда Вы используете cmake в таком виде -DSTXXL_LIBRARY=/somewhere/libstxxl.a
.
проект OSRM не может быть скопилирован на ОС RHEL 5 / CentOS 5 без ручной замены библиотеки libboost на последнюю версию.
Debian Squeeze ships with boost 1.42 but 1.44+ is required by OSRM.
I just managed to build OSRM successfully on Debian Squeeze compiling boost-1.53 myself first.
Используйте версию g++ >= 4.8.
Вы должны в cmake указать вручную путь до boost:
-DBOOST_ROOT=/home/miguel/boost/boost-1.53/lib/
Перед установкой проекта отредактируйте глобальную переменную LD_LIBRARY_PATH. Пример:
LD_LIBRARY_PATH=/home/miguel/boost/boost-1.53/lib/ ./osrm-extract ~/data/osm/germany.osm
Перед установкой проекта установите версию gcc is 4.4.0
Перед установкой проекта установите следующие пакеты. (Протестировано на ОС Debian Wheezy)
sudo apt-get install git libboost-dev gcc g++ make cmake libstxxl-dev \
libxml2-dev libbz2-dev zlib1g-dev libzip-dev libboost-filesystem-dev \
libboost-thread-dev libboost-system-dev libboost-regex-dev libboost-program-options-dev \
libboost-iostreams-dev libgomp1 \
liblua5.1-0-dev libluabind-dev pkg-config libtbb-dev libboost-test-dev \
libprotobuf-dev libosmpbf-dev
Установите последнюю версию CMake (2.8.11+).
Перед установкой проекта установите следующие пакеты:
sudo apt-get install git g++ cmake libboost-dev libboost-filesystem-dev libboost-thread-dev \
libboost-system-dev libboost-regex-dev libstxxl-dev libxml2-dev libsparsehash-dev libbz2-dev \
zlib1g-dev libzip-dev libgomp1 liblua5.1-0-dev \
libluabind-dev pkg-config libgdal-dev libboost-program-options-dev libboost-iostreams-dev \
libboost-test-dev libtbb-dev libexpat1-dev
To compile the source on a Mac, please install the homebrew package system. It will provide all necessary dependencies:
brew install boost git cmake libzip libstxxl libxml2 lua51 luajit luabind tbb
If you run into problems with luabind
while compiling, make sure you have only Lua 5.1 and not Lua 5.2 installed on your system:
brew uninstall lua
To be able to compile tools:
brew install GDAL
save following as script and run:
#!/bin/bash
OS=$(uname)
ARCH=$(uname -m)
PREFIX=/opt/osrm_infrastructure
mkdir packages 2> /dev/null
cd packages
wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz
wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.bz2
wget http://sourceforge.net/projects/luabind/files/luabind/0.9.1/luabind-0.9.1.tar.gz
wget http://sourceforge.net/projects/stxxl/files/stxxl/1.3.1/stxxl-1.3.1.tar.gz
wget http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.bz2
wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz
git clone https://github.com/scrosby/OSM-binary.git OSM-binary.git
wget -O Project-OSRM-0.3.7.zip https://github.com/DennisOSRM/Project-OSRM/archive/v0.3.7.zip
cd ..
function run() {
CMD=$1
eval $CMD
if [[ $? -ne 0 ]]; then
echo "CMD: '$CMD' Failed"
exit 1
fi
echo "CMD: '$CMD' ... Success"
}
DIR=$(pwd)
if [[ ! -d ${PREFIX} ]]; then
echo "Dir: '${PREFIX}' does not exist"
run "mkdir ${PREFIX} 2>/dev/null"
fi
if [[ ! -w ${PREFIX} ]]; then
echo "Couldn't write to: '${PREFIX}'"
exit 1
fi
NAME="cmake-2.8.12.2"
run "cd /tmp"
rm -rf /tmp/$NAME
run "tar -zxf $DIR/packages/${NAME}.tar.gz"
run "cd $NAME"
run "./configure --prefix=$PREFIX"
run "make -j4"
run "make install"
NAME="protobuf-2.5.0"
run "cd /tmp"
rm -rf /tmp/$NAME
run "tar -jxf $DIR/packages/${NAME}.tar.bz2"
run "cd $NAME"
run "./configure --prefix=$PREFIX/$NAME"
run "make -j4"
run "make install"
NAME="boost_1_55_0"
run "cd /tmp"
rm -rf /tmp/$NAME
run "tar -jxf $DIR/packages/${NAME}.tar.bz2"
run "cd $NAME"
run "./bootstrap.sh --prefix=$PREFIX/$NAME"
run "./b2 install --prefix=$PREFIX/$NAME"
NAME="stxxl-1.3.1"
run "cd /tmp"
rm -rf /tmp/$NAME
run "tar -zxf $DIR/packages/${NAME}.tar.gz"
run "cd $NAME"
run "make library_g++"
run "mkdir -p $PREFIX/$NAME"
run "cp -r /tmp/$NAME/lib $PREFIX/$NAME/"
run "cp -r /tmp/$NAME/include $PREFIX/$NAME/include"
export BOOST_ROOT=/tmp/boost_1_55_0
NAME="luabind-0.9.1"
run "cd /tmp"
rm -rf /tmp/$NAME
run "tar -zxf $DIR/packages/${NAME}.tar.gz"
run "cd $NAME"
# Boost rule doesn't look in lib64 by default
run "sed -i 's|(prefix)/lib ;|(prefix)/lib64 ;|' Jamroot"
run "/tmp/boost_1_55_0/bjam --prefix=$PREFIX/$NAME install"
NAME="LuaJIT-2.0.2"
run "cd /tmp"
rm -rf /tmp/$NAME
run "tar -zxf $DIR/packages/${NAME}.tar.gz"
run "cd $NAME"
run "sed -i 's|PREFIX=.*/usr/local|PREFIX=$PREFIX/$NAME|' Makefile"
run "make install"
export PATH=$PREFIX/bin:$PREFIX/protobuf-2.5.0/bin:$PATH
NAME="OSM-binary"
run "cd /tmp"
rm -rf /tmp/$NAME
run "mkdir -p /tmp/$NAME"
run "cp -r $DIR/packages/${NAME}.git/* /tmp/$NAME/"
run "cd $NAME"
run "cmake -DPROTOBUF_LIBRARY=$PREFIX/protobuf-2.5.0/lib/libprotobuf.so -DPROTOBUF_LITE_LIBRARY=$PREFIX/protobuf-2.5.0/lib/libprotobuf-lite.so -DPROTOBUF_INCLUDE_DIR=$PREFIX/protobuf-2.5.0/include -DCMAKE_INSTALL_PREFIX=$PREFIX/$NAME ."
run "make install"
NAME="Project-OSRM-0.3.7"
run "cd /tmp"
rm -rf /tmp/$NAME
run "unzip $DIR/packages/${NAME}.zip"
if [[ -n $NAME ]]; then
rm -rf $PREFIX/$NAME
fi
run "mkdir -p /opt/$NAME"
run "cd /opt/$NAME"
run "sed -i 's| -pedantic||' /tmp/$NAME/CMakeLists.txt"
run "cmake -DBOOST_LIBRARYDIR=$PREFIX/boost_1_55_0/lib -DLUABIND_LIBRARIES=$PREFIX/luabind-0.9.1/lib -DLUABIND_LIBRARY=$PREFIX/luabind-0.9.1/lib/libluabindd.so -DLUABIND_INCLUDE_DIR=$PREFIX/luabind-0.9.1/include -DSTXXL_LIBRARY=$PREFIX/stxxl-1.3.1/lib/libstxxl.a -DSTXXL_INCLUDE_DIR=$PREFIX/stxxl-1.3.1/include -DLUAJIT_LIBRARIES=$PREFIX/LuaJIT-2.0.2/lib -DLUAJIT_INCLUDE_DIR=$PREFIX/LuaJIT-2.0.2/include -DPROTOBUF_LIBRARY=$PREFIX/protobuf-2.5.0/lib/libprotobuf.so -DPROTOBUF_INCLUDE_DIR=$PREFIX/protobuf-2.5.0/include -DOSMPBF_LIBRARY=$PREFIX/OSM-binary/lib/libosmpbf.a -DOSMPBF_INCLUDE_DIR=$PREFIX/OSM-binary/include /tmp/${NAME}/"
run "make"
yum install epel-release
yum install wget
yum install libxml2-devel boost-devel boost-regex bzip2-devel \
libzip-devel protobuf-devel protobuf-lite protobuf-lite-devel \
lua-devel.x86_64 cmake boost-build boost-jam tbb-devel
yum install patch openmpi
cd /tmp
git clone http://github.com/stxxl/stxxl.git
cd stxxl
mkdir debug
cd debug
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/opt/osrm_infrastructure/stxx -DBUILD_STATIC_LIBS=ON ..
make -j4 && make install
cd..
mkdir release; cd release
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/osrm_infrastructure/stxx - DBUILD_STATIC_LIBS=ON ..
make -j4 && make install
cd /tmp
wget http://sourceforge.net/projects/luabind/files/luabind/0.9.1/luabind-0.9.1.tar.gz
tar -zxvf luabind-0.9.1.tar.gz
cd luabind-0.9.1/
vi Jamroot
Change this line local lib = $(prefix)/lib ;
to look like this:
local lib = $(prefix)/lib64 ;
git clone https://gist.github.com/2011636.git
patch -p1 < ./2011636/luabind_boost.patch
bjam install --prefix=/opt/osrm_infrastructure/luabind-0.9.1
cd /tmp
wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz
tar -zxvf LuaJIT-2.0.2.tar.gz
cd LuaJIT-2.0.2
make install PREFIX=/opt/osrm_infrastructure/LuaJIT-2.0.2
cd /tmp
git clone https://github.com/scrosby/OSM-binary.git
cd OSM-binary
mkdir build
cd build
cmake ..
make
make install
cd /opt
wget -O Project-OSRM-0.3.7.zip https://github.com/DennisOSRM/Project-OSRM/archive/v0.3.7.zip
unzip v0.3.7.zip
cd osrm-backend
sed -i 's| -pedantic||' CMakeLists.txt
mkdir build; cd build
cmake -DLUABIND_INCLUDE_DIR=/opt/osrm_infrastructure/luabind-0.9.1/include -DLUABIND_LIBRARY=/opt/osrm_infrastructure/luabind-0.9.1/lib/libluabindd.so \
-DLUAJIT_LIBRARIES=/opt/osrm_infrastructure/LuaJIT-2.0.2/lib/libluajit-5.1.so -DLUAJIT_INCLUDE_DIR=/opt/osrm_infrastructure/LuaJIT-2.0.2/include/ \
-DSTXXL_LIBRARY=/opt/osrm_infrastructure/stxx/lib/libstxxl.a -DSTXXL_INCLUDE_DIR=/opt/osrm_infrastructure/stxx/include -DOSMPBF_LIBRARY=/usr/local/lib/libosmpbf.a -DOSMPBF_INCLUDE_DIR=/usr/local/include/ -DBOOST_LIBRARYDIR=/usr/lib64 ..