Иногда нужно бывает протестировать построение маршрутов, не дожидаясь обновления данных на серверах (или просто нет интернета). Или хочется поднять свой сервер, а Linux-а под руками нет…
Сборка Visual Studio 64 бит с дополнительной поддержкой Windows XP: OSRM-win64xp.zip
32-битная сборка, совместимая с WinXP: OSRM-win32.zip
(собрана MinGW, медленнее у меня примерно в 2 раза)
Использование описано в readme.txt (если кратко - кладем файл с картой в папку datа, запускаем Extract.bat , Server.bat и получаем в браузере локальную копию http://map.project-osrm.org/)
P.S. Кому хочется упаковывать из интернета самому и чаще меня - вот мой сборочный комплект (нужен только Git for Windows, запускать pack.bat, результат в папке OSRM и архиве): OSRM-builder.zip
Откомпилировал свежий OSRM ( http://map.project-osrm.org/http://project-osrm.org/ ) под Windows (VS2012) и решил поделиться с сообществом - иногда нужно бывает протестировать построение маршрутов, не дожидаясь обновления данных на серверах (или просто нет интернета).
ОК, добавил в обе сборки. Не у всех же Windows 8
Если ругается при запуске - правьте data/.stxxl блокнотом - путь к временному файлу и объём в Мб должны быть правильными (по умолчанию 10 гб в d:/temp).
Кстати - извиняюсь, под Windows XP не заработает (VS2012 требует для этого отдельных танцев с бубном, завтра попробую).
А где можно увидеть исправления в коде, позволившие такую компиляцию?
И какие версии библиотек использовались?
Просто я сам пытался откомпилить, и даже откомпилилось после плясок с бубном, но не заработало В итоге было принято политическое решение оставаться на линухе.
Если учесть, что мне нужна собственная версия с модифицированным кодом - буду весьма признателен за необходимые патчи к оригиналу.
Dennis обещал внедрить, когда доберётся до чьей-нибудь машины c Visual Studio
Библиотеки:
Boost (лучше свежий, инструкции по сборке VS в сети есть)
libz, bzip2 и libxml2 (дистрибутивы и инструкции с оф. сайтов, проблем не было)
Google Protobuf 2.5 (в комплекте есть проект Visual Studio)
stxxl (только c svn!) - есть makefile-ы и проект, в настройках врубаем boost и прописываем BOOST_ROOT
osmpbf - либо вручную, либо моим cmake-вариантом (нужно сказать, где лежит protobuf): https://github.com/alex85k/OSM-binary
(если ругается - закомментировать строчку add_subdirectory(tools) в CMakeLists.txt)
luabind : заработало с обновленным сторонним вариантом https://github.com/Oberon00/luabind
(сборка через cmake, ссылаемся на .lib и include от Lua и прописываем BOOST_ROOT и при необходимости Boost_USE_STATIC_LIBS )
Скомпилированыые библиотеки складываем в какую-то папку (CMake - запускаем проект INSTALL, предварительно CMAKE INSTALL DIR в cmake-gui).
Сам OSRM с исправленным кодом собирается тоже CMake-ом с ручным указанием всех путей к библиотекам в cmake-gui . Он на них по очереди ругается и мы в ответ прописываем путь к include и lib файлам вручную (стандартных путей для них под Windows не предусмотрено, так что - ко всем 9 библиотекам). При сборке около 500 Warning-ов (в основном stxxl)
Под Linux-ом или FreeBSD всё намного легче, но luabind и stxxl всё равно иногда приходится собирать руками (если в репозиториях их нет или они ругаются прир компиляции из-за протухания).
А не работает откомпиленный OSRM обычно из-за отсутствия файлика .stxxl с указанием временного файла или папки profile . Ну и раньше 64-бит ID из xml неправильно читало.
Спасибо!
У меня как раз на stxxl падал, где-то в потрохах. Про версию (только c svn!) - это существенно. C файлом “.stxxl” я разобрался достаточно быстро, патч 64-bit ID вы сделали уже давно. Но все равно падало.
luabind тоже много крови попил, этот форк я не находил.
Кстати, быстродействие виндовой версии не сверяли с линуксом на таком же железе?
У меня FreeBSD на виртуалке, но работает примерно с той же скоростью… В Ubuntu перезагрузиться и всё пересобрать пока некогда…
Кстати, для скорости можно ещё поставить luajit (с недавних пор поддерживается) и скомпилировать stxxl с параллельностью (но я уже не стал мучаться). И компилятор Intel, наверное, помог бы (под Linux тоже, кстати, там он даже бесплатный/non-commercial есть)…
Lua там только в экстракте участвует, для роутинга не нужен, как я понимаю.
stxxl с параллельностью большого прироста не даст - алгоритмы линейные.
А вот скорость работы с диском может от оси зависеть очень сильно.
Насчет интела не уверен - вроде в каких-то тестах vc2012 его даже делал.
На виртуалке у меня был ubuntu server, вживую - ubuntu 13.04. Живой линух виртуалку раза в 1.5 превосходит. При этом на машине 8 гиг, виртуалке давал 6.
Откомпилил, однако… Надо было сначала проверить.
Не работает роутинг под виндой. Вот этот “маршрут” и под линуксом, и на основном сервере показывается совершенно нормально.
Под виндой же - что попало. Причем если брать данные, сконверченные на линухе - все равно что попало, т.е. ошибка именно в роутинге. И на моем бинарнике, и на вашем.
Да, печально. Проверил - всё так и есть (уезжает разворачиваться куда попало). C debug-ом там вообще тяжело, библиотеки же отладочные надо (+рабочая папка меняется)…
Можно для гарантии проверить osrm-routed под Linux, собранный из Windows-совместимых исходников… (проверяю на BSD)
(Может, патч кривоват? Вряд ли, конечно. Скорее всего, какое-нибудь преобразование типов по-другому сработало…)