[Windows 환경] MSYS2, MinGW64 용 OSRM 빌드하기

2024. 11. 28. 21:29프로그래밍

728x90

저번 글에서는 Clang64 환경에서 OSRM을 디버그 빌드 하였습니다. 모든 것이 처음이라 시행착오를 겪었는데요.

이번에는 새로운 마음으로 다시 Mingw64 환경에서 다시 빌드 해보기로 했습니다.

 

 

[Windows 환경] MSYS2, Clang64 및 Visual Studio Code

[Windows 환경] MSYS2, Clang64 및 Visual Studio Code 사용OSRM 실행하기 - 오류 해결Chat gpt 와 함께 OSRM 빌드해보기 - 디버그모드저번 글에서 릴리즈 모드로 빌드를 성공하기는 했으나, 실행 시 오류로 인해서

tobee.tistory.com

 

 

1.준비하기

다음과 같이 개발 환경을 설정해 줍니다.

pacman -S git make gcc cmake \
           mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake \
           mingw-w64-x86_64-boost mingw-w64-x86_64-protobuf \
           mingw-w64-x86_64-libuv mingw-w64-x86_64-zlib \
           mingw-w64-x86_64-tbb mingw-w64-x86_64-intel-tbb \
           mingw-w64-x86_64-lua

 

2. CMake를 이용한 디버그 빌드

다음과 같이 -g 옵션을 이용해서 디버그 빌드를 해 줍니다.

빌드하기 전에 tar.hpp  microtar.c 파일을 변경해 줍니다.

(저번 글들에 있음)

osrm-backend.zip
0.01MB

 

rm -Rf *

cmake -G "MinGW Makefiles" \
  -DCMAKE_CXX_FLAGS="-g -Wa,-mbig-obj -Wmisleading-indentation -flarge-source-files -DTOBEE" \
  -DCMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS} -lws2_32 -lmswsock" \
  -DDOXYGEN_EXECUTABLE=OFF \
  -DCMAKE_BUILD_TYPE=Debug \
  -DCMAKE_SYSTEM_NAME=Windows \
  -DBOOST_INCLUDEDIR=/D/DEV/SDK/msys64/mingw64/include/boost \
  -DBOOST_LIBRARYDIR=/D/DEV/SDK/msys64/mingw64/lib \
  -DTBB_DIR=/D/DEV/SDK/msys64/mingw64/lib/cmake/TBB \
  -DTBB_INCLUDE_DIR=/D/DEV/SDK/msys64/mingw64/include\tbb \
  -DLUA_INCLUDE_DIR=/D/DEV/SDK/msys64/mingw64/include \
  -DLUA_LIBRARIES=/D/DEV/SDK/msys64/mingw64/lib/liblua.a \
  -DCMAKE_INSTALL_PREFIX=/D/DEV/Tools/osrm-backend/Debug \
  ..
mingw32-make -j5
mingw32-make install

 

3. 데이터 다운로드

아래 사이트에서 좀 작은 서울 데이터를 받아 줍니다.

파일 명: seoul-non-military.osm.pbf

 

Index of /download/

 

tiles.osm.kr

해당 디렉토리로 이동하여

cd /D/DEV/Tools/osrm-backend/data/

 

경로를 잡아 줍니다.

export PATH=/D/DEV/Tools/osrm-backend/Debug/bin:$PATH:.

 

4. 경로 데이터 생성하기

다음과 같이 데이터를 풀어주고 데이터 구조를 만들어 줍니다.

osrm-extract -p /home/AA160/osrm-backend/profiles/car.lua /D/DEV/Tools/osrm-backend/data/seoul-non-military.osm.pbf

osrm-contract /D/DEV/Tools/osrm-backend/data/seoul-non-military

 

5. 백엔드 서버 실행

모든 데이터 생성 작업이 끝났으면, 백엔드 서버를 실행하여 이상 유무를 확인 합니다.

osrm-routed.exe /D/DEV/Tools/osrm-backend/data/seoul-non-military.osrm

위와 같이 이상없이 실행되었다면 정상적으로 백엔드 서버가 실행되었다는 것입니다.

 

6. front-end 설치

이제 프론트 엔드를 설치 해 봅니다쓰기 쉬운 Nodejs Http 서버 모듈을 이용하면 될 듯 합니다.

 

가. 우선 Nodejs 를 설치합니다.

pacman -S mingw-w64-x86_64-nodejs

 

나. 그런다음 OSRM 프론트엔드를 위한 자바스크립트 라이브러리를 설치 하도록 합니다.

npm install leaflet leaflet-routing-machine

 

다. 마지막으로 이를 실행해 줄 서버를 설치 합니다.

npm install -g http-server

 

7. 테스트하기 – front-end에서 back-end 까지

서울 지역이기 때문에 오픈스트리트 맵을 이용해서 테스트 맵을 구성해 봅니다.

저번에 사용했던 코드를 사용하여 구성합니다.

 

폴더 구성

다음과 같이 폴더를 구성합니다.

# mkdir osrm-frontend
# cd osrm-frontend/
# pwd
/D/DEV/Tools/osrm-frontend

 

 

8.프론트엔드 서버 실행

다음과 같이 웹서버를 실행합니다.

 

백엔드 서버를 실행해 줍니다.

 

마지막으로 웹브라우저에서 접속해 봅시다

 

이상.

728x90