Minimum Boost version?
I'm trying to figure out the minimum Boost version that OTB requires. Up to now:
- 1.73 and 1.75 work
- 1.70 and 1.72 fail with https://github.com/boostorg/thread/pull/297:
./boost/thread/pthread/thread_data.hpp:60:5: error: missing binary operator before token "("
60 | #if PTHREAD_STACK_MIN > 0
| ^~~~~~~~~~~~~~~~~
- 1.58, 1.64 and 1.68 fail because of a C++11/14 ABI difference (https://github.com/boostorg/system/issues/26, but why were we building Boost with C++11?):
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o: in function `otb::ExtractXMLFiles::GetXMLFilesInDirectory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) [clone .localalias]':
otbTerraSarXSarImageMetadataInterface.cxx:(.text+0x15fc): undefined reference to `boost::filesystem::detail::directory_iterator_construct(boost::filesystem::directory_iterator&, boost::filesystem::path const&, boost::system::error_code*)'
/usr/bin/ld: otbTerraSarXSarImageMetadataInterface.cxx:(.text+0x16e7): undefined reference to `boost::filesystem::directory_entry::m_get_status(boost::system::error_code*) const'
/usr/bin/ld: otbTerraSarXSarImageMetadataInterface.cxx:(.text+0x1721): undefined reference to `boost::filesystem::path_traits::dispatch(boost::filesystem::directory_entry const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
/usr/bin/ld: otbTerraSarXSarImageMetadataInterface.cxx:(.text+0x172c): undefined reference to `boost::filesystem::path::extension() const'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o: in function `otb::ExtractXMLFiles::GetResourceFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)':
otbTerraSarXSarImageMetadataInterface.cxx:(.text+0x1bda): undefined reference to `boost::filesystem::path::filename() const'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o: in function `otb::ExtractXMLFiles::GetXMLFilesInDirectory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) [clone .cold]':
otbTerraSarXSarImageMetadataInterface.cxx:(.text.unlikely+0x3a3): undefined reference to `boost::filesystem::detail::dir_itr_close(void*&, void*&)'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o: in function `boost::detail::sp_counted_impl_p<boost::filesystem::detail::dir_itr_imp>::dispose()':
otbTerraSarXSarImageMetadataInterface.cxx:(.text._ZN5boost6detail17sp_counted_impl_pINS_10filesystem6detail11dir_itr_impEE7disposeEv[_ZN5boost6detail17sp_counted_impl_pINS_10filesystem6detail11dir_itr_impEE7disposeEv]+0x13): undefined reference to `boost::filesystem::detail::dir_itr_close(void*&, void*&)'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o: in function `_GLOBAL__sub_I_otbTerraSarXSarImageMetadataInterface.cxx':
otbTerraSarXSarImageMetadataInterface.cxx:(.text.startup+0x3d): undefined reference to `boost::system::generic_category()'
/usr/bin/ld: otbTerraSarXSarImageMetadataInterface.cxx:(.text.startup+0x42): undefined reference to `boost::system::generic_category()'
/usr/bin/ld: otbTerraSarXSarImageMetadataInterface.cxx:(.text.startup+0x47): undefined reference to `boost::system::system_category()'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbRadarsat2ImageMetadataInterface.cxx.o: in function `otb::Radarsat2ImageMetadataInterface::CreateCalibrationLookupData(otb::SARCalib&, otb::ImageMetadata const&, otb::MetadataSupplierInterface const&, bool) const':
otbRadarsat2ImageMetadataInterface.cxx:(.text+0xb85): undefined reference to `boost::filesystem::path::remove_filename()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0xb94): undefined reference to `boost::filesystem::path::operator/=(char const*)'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0xc2c): undefined reference to `boost::filesystem::path::remove_filename()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0xc3b): undefined reference to `boost::filesystem::path::operator/=(char const*)'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0xd31): undefined reference to `boost::filesystem::path::remove_filename()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0xd40): undefined reference to `boost::filesystem::path::operator/=(char const*)'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbRadarsat2ImageMetadataInterface.cxx.o: in function `otb::Radarsat2ImageMetadataInterface::ParseGeom(otb::ImageMetadata&)':
otbRadarsat2ImageMetadataInterface.cxx:(.text+0x3f38): undefined reference to `boost::filesystem::path::remove_filename()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0x3f4a): undefined reference to `boost::filesystem::path::operator/=(char const*)'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0x4405): undefined reference to `boost::filesystem::path::remove_filename()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0x4410): undefined reference to `boost::filesystem::path::operator/=(char const*)'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbRadarsat2ImageMetadataInterface.cxx.o: in function `_GLOBAL__sub_I_otbRadarsat2ImageMetadataInterface.cxx':
otbRadarsat2ImageMetadataInterface.cxx:(.text.startup+0x3d): undefined reference to `boost::system::generic_category()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text.startup+0x42): undefined reference to `boost::system::generic_category()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text.startup+0x47): undefined reference to `boost::system::system_category()'
collect2: error: ld returned 1 exit status
Note that I'm using GCC 13.2.1. Older compilers might accept that #if PTHREAD_STACK_MIN > 0
, but it's not that easy to test.
Edited by Laurențiu Nicola