728x90
저번 글에서 다음 명령을 실행 해보니,
./osrm-extract.exe -p /home/User/osrm-backend/profiles/car.lua south-korea-latest.osm.pbf
다음과 같은 오류를 만났습니다.
Unexpected end of file: osrm_fingerprint.meta: Datatype size does not match file size. (at include/storage/tar.hpp:144)
너무 이상한 오류라고 생각 해 볼 수도 있겠으나, 해당 소스 코드를 확인 해 보면 다음과 같은 코드로 구성 됩니다.
https://github.com/Project-OSRM/osrm-backend/blob/master/include/storage/tar.hpp
template <typename T, typename OutIter> void ReadStreaming(const std::string &name, OutIter out)
{
mtar_header_t header;
auto ret = mtar_find(&handle, name.c_str(), &header);
detail::checkMTarError(ret, path, name);
auto number_of_elements = header.size / sizeof(T);
auto expected_size = sizeof(T) * number_of_elements;
if (header.size != expected_size)
{
throw util::RuntimeError(name + ": Datatype size does not match file size.",
ErrorCode::UnexpectedEndOfFile,
SOURCE_REF);
}
뭔지는 모르겠으나, 이 단계를 넘어가보
"Unexpected end of file " 과 아래 코드를 종합해 보면, 뭔가 header 를 읽어 내지 못하는 게 아닐까 하는 생각이 드네요
auto ret = mtar_find(&handle, name.c_str(), &header);
디버그 모드로 빌드 한 이유가 gdb 를 사용하기 위해서니까 gdb를 사용해 보기로 하였습니다.
$ gdb ./osrm-extract
$ (gdb) run -p /home/User/osrm-backend/profiles/car.lua south-korea-latest.osm.pbf
위의 코드는 다음과 같은 오류를 냈습니다.
"Profile /home/User/osrm-backend/profiles/car.lua not found!"
결국 윈도우 gcc 환경인 mingw 이므로 경로는 윈도우 경로로 진행 해야 하는 것인가? 하는 의문이 들었습니다.
명령을 윈도우 경로로 바꾸어 진행해 보았습니다.
(gdb) run -p C:\DEV\SDK\msys64\home\User\osrm-backend/profiles\car.lua south-korea-latest.osm.pbf
다음과 같이 그 오류는 넘어 가는 군요...
그래서 다음 명령으로 진행해 보기로 했습니다.
set PATH=$PATH:.:
./osrm-extract.exe -p /C/DEV/SDK/msys64/home/User/osrm-backend/profiles/car.lua \
/C/DEV/SDK/msys64/home/User/osrm-backend/install/bin/south-korea-latest.osm.pbf
그 다음 오류가 생기네요...
거의 비슷한 오류네요
[2024-11-22T13:59:55.311945100] [error] Unexpected end of file: /common/names/blocks.meta: Datatype size does not match file size. (at include/storage/tar.hpp:144)
그럼 다시
cmake -G "MinGW Makefiles" \
-DCMAKE_CXX_FLAGS="-g -Wa,-mbig-obj -Wmisleading-indentation -flarge-source-files" \
-DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../install ..
mingw32-make -j5
mingw32-make install
# 기본 경로 설정
export PATH=/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/home/User/osrm-backend/install/bin:$PATH
# 라이브러리 경로 설정
export LIBRARY_PATH=/mingw64/lib:/home/User/osrm-backend/install/lib:$LIBRARY_PATH
# 헤더 경로 설정
export C_INCLUDE_PATH=/mingw64/include:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=/mingw64/include:/home/User/osrm-backend/install/include:$CPLUS_INCLUDE_PATH
# 패키지 구성 파일 경로 설정
export PKG_CONFIG_PATH=/mingw64/lib/pkgconfig:/home/User/osrm-backend/install/lib/pkgconfig:$PKG_CONFIG_PATH
osrm-extract.exe -p /home/User/osrm-backend/profiles/car.lua south-korea-latest.osm.pbf
$ gdb osrm-extract
$ (gdb) run -p C:\DEV\SDK\msys64\home\User\osrm-backend\profiles\car.lua C:\DEV\SDK\msys64\home\User\south-korea-latest.osm.pbf
>> 중단점 설정
$ (gdb) break tar.hpp:ReadStreaming
$ (gdb) break osrm::storage::tar::FileReader::ReadStreaming
728x90
'프로그래밍 > GIS' 카테고리의 다른 글
[Windows] OSRM 실행하기 - OSRM backend 서버 실행 (0) | 2024.11.27 |
---|---|
[Windows] OSRM 실행하기 - osrm-extract (0) | 2024.11.27 |
Chat gpt 와 함께 OSRM 빌드해보기 - 디버그모드 (1) | 2024.11.22 |
Chat gpt 와 함께 OSRM 빌드해보기 (0) | 2024.11.18 |
카카오 맵 API 를 사용한 도형 좌표 표출 (0) | 2024.01.30 |