저번 글에서 릴리즈 모드로 빌드를 성공하기는 했으나, 실행 시 오류로 인해서 디버그 모드로 빌드를 진행하다
실패 했습니다.
그래서 오늘도 다시 Chat 선생께 물어보았습니다. 다음과 같이
osrm 을 mingw64 mys2 에서 디버그 모드로 빌드하고 싶어요
위의 질문으로 진행 했던 내용입니다. 다행히 디버그 모드로 빌드를 했습니다 만, 약간 저번글에서 빌드 한 내용과 차이가 좀 있습니다.
환경 다시 만들기
다음과 같이 설치를 진행 했습니다.
pacman -S base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-protobuf mingw-w64-x86_64-libzip git
설치가 끝이 나면 Make 파일을 만들어 보기로 합니다.
Make 파일 만들기
설명 대로 다음과 같이 진행해 보았습니다.
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../install ..
mingw32-make -j5
그냥 make 로는 좀 느린 것 같아서, 내 PC의 성능을 좀 믿고 동시 사용 수를 좀 늘려서 진행 했습니다.
오류 발생
In file included from C:/DEV/SDK/msys64/home/User/osrm-backend/include/extractor/extraction_helper_functions.hpp:15,
from C:/DEV/SDK/msys64/home/User/osrm-backend/src/extractor/scripting_environment_lua.cpp:3:
C:/DEV/SDK/msys64/home/User/osrm-backend/include/guidance/parsing_toolkit.hpp: In function 'std::string osrm::extractor::guidance::trimLaneString(sttring, int32_t, int32_t)':
C:/DEV/SDK/msys64/home/User/osrm-backend/include/guidance/parsing_toolkit.hpp:28: note: '-Wmisleading-indentation' is disabled from this point onwarsince column-tracking was disabled due to the size of the code/headers
28 | for (std::int32_t i = 0; i < count_left; ++i)
C:/DEV/SDK/msys64/home/User/osrm-backend/include/guidance/parsing_toolkit.hpp:28: note: adding '-flarge-source-files' will allow for more column-trag support, at the expense of compilation time and memory
[ 91%] Linking CXX executable osrm-datastore.exe
[ 91%] Built target osrm-datastore
C:/DEV/SDK/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/as.exe: CMakeFiles/EXTRACTOR.dir/src/extractoripting_environment_lua.cpp.obj: too many sections (94193)
C:\DEV\SDK\msys64\tmp\ccDVZ6v5.s: Assembler messages:
C:\DEV\SDK\msys64\tmp\ccDVZ6v5.s: Fatal error: can't write 6 bytes to section .text of CMakeFiles/EXTRACTOR.dir/src/extractor/scripting_environment_cpp.obj: 'file too big'
C:/DEV/SDK/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/as.exe: CMakeFiles/EXTRACTOR.dir/src/extractoripting_environment_lua.cpp.obj: too many sections (94193)
C:\DEV\SDK\msys64\tmp\ccDVZ6v5.s: Fatal error: CMakeFiles/EXTRACTOR.dir/src/extractor/scripting_environment_lua.cpp.obj: file too big
make[2]: *** [CMakeFiles/EXTRACTOR.dir/build.make:331: CMakeFiles/EXTRACTOR.dir/src/extractor/scripting_environment_lua.cpp.obj] Error 1
make[1]: *** [CMakeFiles/Makefile2:284: CMakeFiles/EXTRACTOR.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
키워드가 'file too big' 이 아닐까 하는 생각으로 검색을 해보니, 다음과 같이 쓰라고 하더군요.
물론 물어보니 거의 비슷 하였습니다.
다음 명령으로 진행 하였습니다.
cmake -G "MinGW Makefiles" -DCMAKE_CXX_FLAGS="-Wa,-mbig-obj" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../install ..
mingw32-make -j5
mingw32-make install
중간 중간에 waring 메시지가 보이길래,
In file included from C:/DEV/SDK/msys64/home/User/osrm-backend/include/extractor/extraction_helper_functions.hpp:15,
from C:\DEV\SDK\msys64\home\User\osrm-backend\src\extractor\scripting_environment_lua.cpp:3:
C:/DEV/SDK/msys64/home/User/osrm-backend/include/guidance/parsing_toolkit.hpp: In function 'std::string osrm::extractor::guidance::trimLaneString(std::string, int32_t, int32_t)':
C:/DEV/SDK/msys64/home/User/osrm-backend/include/guidance/parsing_toolkit.hpp:28: note: '-Wmisleading-indentation' is disabled from this point onwards, since column-tracking was disabled due to the size of the code/headers
28 | for (std::int32_t i = 0; i < count_left; ++i)
C:/DEV/SDK/msys64/home/User/osrm-backend/include/guidance/parsing_toolkit.hpp:28: note: adding '-flarge-source-files' will allow for more column-tracking support, at the expense of compilation time and memory
다시 다음과 같이 Cmake 를 주고서 진행을 해 보았습니다.
cmake -G "MinGW Makefiles" \
-DCMAKE_CXX_FLAGS="-Wa,-mbig-obj -Wmisleading-indentation -flarge-source-files" \
-DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../install ..
mingw32-make -j5
mingw32-make install
테스트 해보기
그럼 뭐... 다시 첫 번째 글에서 테스트 한 내용을 다시 테스트 해보기 하겠습니다.
install/bin 으로 파일을 복사 한 후, 문제의 명령을 실행 해 보았습니다.
파일 사이즈가 작은 것을 먼저 해 보았다는 거죠
osrm-extract.exe -p ..\profiles\car.lua seoul-non-military.osm.pbf
뭔가 알송달송한 오류가 나네요...
[2024-11-21T15:00:50.052957800] [error] Unexpected end of file: /common/names/blocks.meta:
Datatype size does not match file size. (at include/storage/tar.hpp:144)
뭔가 압축 파일이다라는 느낌이 들기는 하지만, 이게 오류 인건지는 확인이 안되네요.
다른 파일로 하면 될까 싶지만, 그래도 한 번 큰 파일을 사용해 보았습니다.
osrm-extract.exe -p ..\..\profiles\car.lua south-korea-latest.osm.pbf
다음은 실패한 명령 입니다.
rm -rf *.osrm* common/names/*
./osrm-extract.exe -p /home/User/osrm-backend/profiles/car.lua seoul-non-military.osm.pbf
rm -rf *.osrm* common/names/*
./osrm-extract.exe -p /home/User/osrm-backend/install/share/osrm/profiles/car.lua seoul-non-military.osm.pbf
rm -rf *.osrm* common/names/*
./osrm-extract.exe -p /home/User/osrm-backend/install/share/osrm/profiles/lib/profile_debugger.lua seoul-non-military.osm.pbf
rm -rf *.osrm* common/names/*
osrm-extract.exe -p ..\..\profiles\car.lua south-korea-latest.osm.pbf
osrm-extract -p C:\DEV\SDK\msys64\home\User\osrm-backend\profiles\car.lua south-korea-latest.osm.pbf
osrm-extract -p C:\DEV\SDK\msys64\home\User\osrm-backend\install\share\osrm\profiles\lib\profile_debugger.lua south-korea-latest.osm.pbf
osrm-extract -p (cygpath -u "C:\DEV\SDK\msys64\home\User\osrm-backend\install\share\osrm\profiles\lib\profile_debugger.lua") south-korea-latest.osm.pbf
'프로그래밍 > GIS' 카테고리의 다른 글
[Windows] OSRM 실행하기 - osrm-extract (0) | 2024.11.27 |
---|---|
[실패] OSRM 실행하기 - 오류 해결 (0) | 2024.11.23 |
Chat gpt 와 함께 OSRM 빌드해보기 (0) | 2024.11.18 |
카카오 맵 API 를 사용한 도형 좌표 표출 (0) | 2024.01.30 |
톰캣 카카오 맵 API 사용하기 (0) | 2024.01.29 |