mapsme / omim

🗺️ MAPS.ME — Offline OpenStreetMap maps for iOS and Android
Apache License 2.0
4.58k stars 1.15k forks source link

[compile/linker bug] Conflict with system boost? #144

Closed MaksVasilev closed 8 years ago

MaksVasilev commented 9 years ago

clang++ -ccc-gcc-name g++ -Wl,--gc-sections -Wl,-Bsymbolic-functions -o ../out/release/MAPS.ME ../out/release/tmp/qt/main.o ../out/release/tmp/qt/mainwindow.o ../out/release/tmp/qt/draw_widget.o ../out/release/tmp/qt/proxystyle.o ../out/release/tmp/qt/slider_ctrl.o ../out/release/tmp/qt/about.o ../out/release/tmp/qt/info_dialog.o ../out/release/tmp/qt/preferences_dialog.o ../out/release/tmp/qt/search_panel.o ../out/release/tmp/qt/update_dialog.o ../out/release/tmp/qt/qrc_resources.o ../out/release/tmp/qt/moc_mainwindow.o ../out/release/tmp/qt/moc_draw_widget.o ../out/release/tmp/qt/moc_about.o ../out/release/tmp/qt/moc_info_dialog.o ../out/release/tmp/qt/moc_preferences_dialog.o ../out/release/tmp/qt/moc_search_panel.o ../out/release/tmp/qt/moc_update_dialog.o -L../out/release -lmap -lrender -lgui -lrouting -lsearch -lstorage -lindexer -lgraphics -lplatform -lanim -lgeometry -lcoding -lbase -lfreetype -lexpat -lfribidi -ltomcrypt -ljansson -lprotobuf -losrm -lstats_client -lminizip -lsuccinct -lz -lQt5OpenGL -L/usr/lib64 -lQt5Widgets -lQt5Gui -lQt5Network -lQt5Core -lGL -lpthread ../out/release/libgraphics.a(resource_manager.o): In functionboost::gil::ioerror(char const)': /home/maks/SOFT/build/omim/graphics/../3party/boost/boost/gil/extension/io/io_error.hpp:27: undefined reference to std::ios_base::failure::failure(char const_, std::error_code const&)' /home/maks/SOFT/build/omim/graphics/../3party/boost/boost/gil/extension/io/io_error.hpp:27: undefined reference tostd::ios_base::failure::failure(char const, std::error_code const&)' /home/maks/SOFT/build/omim/graphics/../3party/boost/boost/gil/extension/io/io_error.hpp:27: undefined reference tostd::ios_base::failure::failure(char const_, std::error_code const&)' /home/maks/SOFT/build/omim/graphics/../3party/boost/boost/gil/extension/io/io_error.hpp:27: undefined reference tostd::iosbase::failure::failure(char const, std::error_code const&)' /home/maks/SOFT/build/omim/graphics/../3party/boost/boost/gil/extension/io/io_error.hpp:27: undefined reference to `std::ios_base::failure::failure(char const, std::error_code const&)' ../out/release/libgraphics.a(resource_manager.o):/home/maks/SOFT/build/omim/graphics/../3party/boost/boost/gil/extension/io/io_error.hpp:27: more undefined references tostd::ios_base::failure::failure(char const_, std::error_code const&)' follow ../out/release/libstats_client.a(file_manager_posix_impl.o): In functionalohalytics::FileManager::GetFileSize(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)': /home/maks/SOFT/build/omim/stats/../3party/Alohalytics/src/posix/file_manager_posix_impl.cc:73: undefined reference to`std::ios_base::failure::failure(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/maks/SOFT/build/omim/stats/../3party/Alohalytics/src/posix/file_manager_posix_impl.cc:76: undefined reference to std::ios_base::failure::failure(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' clang-3.7: error: linker command failed with exit code 1 (use -v to see invocation) Makefile:193: ошибка выполнения рецепта для цели «../out/release/MAPS.ME» make[1]: *_\* [../out/release/MAPS.ME] Ошибка 1 make[1]: выход из каталога «/home/maks/SOFT/build/omim/qt» Makefile:810: ошибка выполнения рецепта для цели «sub-qt-make_first-ordered» make: **\* [sub-qt-make_first-ordered] Ошибка 2

MaksVasilev commented 9 years ago

Boost 1.85 Boost 1.58 libQt5 5.5.0 clang 3.7 openSUSE Tumbleweed/20150924 x86_64 (kernel 4.2.1)

socketbind commented 9 years ago

Can confirm this on Ubuntu 15.04 with Clang 3.6. It seems that std::ios_base::failure has been changed in C++11 and thus breaks compilation.

For me, compilation always fails similarly when _tools/unix/buildomim.sh is issued:

make[1]: Entering directory '/home/gabriel/Desktop/omim-build-debug/qt'
clang++ -ccc-gcc-name g++ -Wl,--gc-sections -Wl,-Bsymbolic-functions -o ../out/debug/MAPS.ME ../out/debug/tmp/qt/main.o ../out/debug/tmp/qt/mainwindow.o ../out/debug/tmp/qt/draw_widget.o ../out/debug/tmp/qt/proxystyle.o ../out/debug/tmp/qt/slider_ctrl.o ../out/debug/tmp/qt/about.o ../out/debug/tmp/qt/info_dialog.o ../out/debug/tmp/qt/preferences_dialog.o ../out/debug/tmp/qt/search_panel.o ../out/debug/tmp/qt/update_dialog.o ../out/debug/tmp/qt/qrc_resources.o ../out/debug/tmp/qt/moc_mainwindow.o ../out/debug/tmp/qt/moc_draw_widget.o ../out/debug/tmp/qt/moc_about.o ../out/debug/tmp/qt/moc_info_dialog.o ../out/debug/tmp/qt/moc_preferences_dialog.o ../out/debug/tmp/qt/moc_search_panel.o ../out/debug/tmp/qt/moc_update_dialog.o   -L../out/debug -lmap -lrender -lgui -lrouting -lsearch -lstorage -lindexer -lgraphics -lplatform -lanim -lgeometry -lcoding -lbase -lfreetype -lexpat -lfribidi -ltomcrypt -ljansson -lprotobuf -losrm -lstats_client -lminizip -lsuccinct -lz -lQt5OpenGL -L/usr/X11R6/lib64 -lQt5Widgets -lQt5Gui -lQt5Network -lQt5Core -lGL -lpthread 
../out/debug/libgraphics.a(resource_manager.o): In function `boost::gil::io_error(char const*)':
/home/gabriel/Desktop/omim/3party/boost/boost/gil/extension/io/io_error.hpp:27: undefined reference to `std::ios_base::failure::failure(char const*, std::error_code const&)'
../out/debug/libstats_client.a(file_manager_posix_impl.o): In function `alohalytics::FileManager::GetFileSize(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/home/gabriel/Desktop/omim/3party/Alohalytics/src/posix/file_manager_posix_impl.cc:73: undefined reference to `std::ios_base::failure::failure(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/home/gabriel/Desktop/omim/3party/Alohalytics/src/posix/file_manager_posix_impl.cc:76: undefined reference to `std::ios_base::failure::failure(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Makefile:193: recipe for target '../out/debug/MAPS.ME' failed
make[1]: *** [../out/debug/MAPS.ME] Error 1
make[1]: Leaving directory '/home/gabriel/Desktop/omim-build-debug/qt'
Makefile:810: recipe for target 'sub-qt-make_first-ordered' failed
make: *** [sub-qt-make_first-ordered] Error 2
biodranik commented 9 years ago

@MaksVasilev what is Boost 1.85? The latest is 1.59. Your issue can be related to clang 3.7 https://llvm.org/bugs/show_bug.cgi?id=24844

@socketbind Just rechecked on a clean Ubuntu 15.04 with clang 3.6 and boost 1.55 libraries installed. Everything compiles flawlessly. Please check your environment variables/flags or share a link to a full build log.

We use system boost libraries only to compile OSRM binaries, which are built after maps client (which resides in qt.pro file). Maps client uses embedded boost headers in 3party folder (and they are from 1.54 version). Your issue can be caused by somehow mixing headers/includes.

MaksVasilev commented 9 years ago

Boost 1.58, а не 1.85. Опечатался.

biodranik commented 9 years ago

Can you try to uninstall system boost libraries and try to recompile again? And it would be really helpful to see a complete build log.

MaksVasilev commented 8 years ago

Нет, удалить системный буст нет возможности, от него зависит много приложений более важного плана.

В данный момент времени, на текущем актуальном срезе гит-репозитария ошибка не проявляется, обновлений LLVM за это время не было.

biodranik commented 8 years ago

FYI: Я исправлял некоторые ошибки сборки и обновил буст в проекте. Внешний буст из системы используется только для сборки бинарника 3party osrm.