[OSRM-talk] error: undefined reference to 'boost::re_detail::cpp_regex_traits_implementation<char>::transform

Patrick Niklaus patrick.niklaus at student.kit.edu
Thu Oct 19 21:42:15 UTC 2017


Hey,

the primary difference to our build environment on Travis CI is that
we build on Ubuntu 14.04 using boost 1.54:
https://travis-ci.org/Project-OSRM/osrm-backend/jobs/290183596#L1573
It could be that this is a specific issue with boost 1.58 that was
introduced by using a new symbol on `master`.

The error in question looks really weird. A wild guess might be there
are two version of libboost on your system and OSRM picks up the wrong
headers.

Best,
Patrick


On Wed, Oct 18, 2017 at 4:30 PM, Mateusz Loskot <mateusz at loskot.net> wrote:
> Hi,
>
> I'm building the current master on Ubuntu 16.04 (inside Bash on Windows),
> using GCC 7.2 and 6.3 and Boost 1.58 - all installed from Xenial packages.
> I'm experiencing the linker failure for libosrm_extract.a around libboost_regex.
>
> It has been a while (~6 weeks) since I built OSRM master last time,
> but the OSRM used to build fine in that environment.
>
> I'm puzzled, because I see the Travis CI builds are perfectly green.
>
> I wonder if anyone experienced similar issue.
>
> Below, I paste the g++ command with link error.
> As you can see all of the Boost libraries (and some others) are repeated,
> but that should not be relevant to the issue. In fact, I tried w/o the redundant
> libs to confirm the linking still fails.
>
>
> /usr/bin/g++-6    -Wall -Wextra -pedantic -Wuninitialized
> -Wunreachable-code -Wstrict-overflow=1 -U_FORTIFY_SOURCE
> -D_FORTIFY_SOURCE=2 -fdiagnostics-color=auto -fPIC
> -ftemplate-depth=1024 -ffunction-sections -fdata-sections -std=c++14
> -O3 -DNDEBUG   -fuse-ld=gold -Wl,--disable-new-dtags
> -Wl,--gc-sections -Wl,-O1 -Wl,--hash-style=gnu -Wl,--sort-common
> CMakeFiles/osrm-extract.dir/src/tools/extract.cpp.o  -o osrm-extract
> -rdynamic libosrm_extract.a -lboost_program_options -lbz2
> -lboost_regex -lboost_date_time -lboost_chrono -lboost_filesystem
> -lboost_iostreams -lboost_thread -lboost_system -lpthread -lexpat
> -llua5.2 -lm -lz -ltbb -ltbbmalloc -lbz2 -lboost_regex
> -lboost_date_time -lboost_chrono -lboost_filesystem -lboost_iostreams
> -lboost_thread -lboost_system -lpthread -lexpat -llua5.2 -lm -lz -ltbb
> -ltbbmalloc
> libosrm_extract.a(restriction_parser.cpp.o):restriction_parser.cpp:function
> __gnu_cxx::__normal_iterator<char const*,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >
> boost::re_detail::re_is_set_member<__gnu_cxx::__normal_iterator<char
> const*, std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, char, boost::regex_traits<char,
> boost::cpp_regex_traits<char> >, unsigned
> int>(__gnu_cxx::__normal_iterator<char const*,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, boost::re_detail::re_set_long<unsigned int>
> const*, boost::re_detail::regex_data<char, boost::regex_traits<char,
> boost::cpp_regex_traits<char> > > const&, bool): error: undefined
> reference to 'boost::re_detail::cpp_regex_traits_implementation<char>::transform_primary[abi:cxx11](char
> const*, char const*) const'
> libosrm_extract.a(restriction_parser.cpp.o):restriction_parser.cpp:function
> __gnu_cxx::__normal_iterator<char const*,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >
> boost::re_detail::re_is_set_member<__gnu_cxx::__normal_iterator<char
> const*, std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, char, boost::regex_traits<char,
> boost::cpp_regex_traits<char> >, unsigned
> int>(__gnu_cxx::__normal_iterator<char const*,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*,
> std::__cxx11::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >, boost::re_detail::re_set_long<unsigned int>
> const*, boost::re_detail::regex_data<char, boost::regex_traits<char,
> boost::cpp_regex_traits<char> > > const&, bool): g[abi:cxx11](char
> const*, char const*) const'
>
> --
> Mateusz Loskot, http://mateusz.loskot.net
>
> _______________________________________________
> OSRM-talk mailing list
> OSRM-talk at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/osrm-talk



More information about the OSRM-talk mailing list