Closed Justinzobel closed 9 years ago
I believe we've seen this reported before, and my theory is that you are compiling OIIO with different -std=c++11 than was used when building the boost library you are using.
Do you know which version of boost you are using, and whether it was compiled using C++11 or not?
Try this (bash) to get a full build log:
make nuke
make VERBOSE=1
That should at least reveal for sure which C++ standard you are using, and which boost version. But it won't tell us, unfortunately, what build flags were used when building boost.
Ahh yes we've recently updated to gcc 5.2 so I'll rebuild boost and see how I go. Thanks for the awesomely quick response. You can close this, if I run into further issues I'll re-open.
On Thu, 17 Sep 2015 at 14:36 Larry Gritz notifications@github.com wrote:
I believe we've seen this reported before, and my theory is that you are compiling OIIO with different -std=c++11 than was used when building the boost library you are using.
Do you know which version of boost you are using, and whether it was compiled using C++11 or not?
Try this (bash) to get a full build log:
make nuke make VERBOSE=1
That should at least reveal for sure which C++ standard you are using, and which boost version. But it won't tell us, unfortunately, what build flags were used when building boost.
— Reply to this email directly or view it on GitHub https://github.com/OpenImageIO/oiio/issues/1215#issuecomment-140971179.
Great, thanks.
Now that many boost libraries have been incorporated into the C++ standard itself, the boost versions are modified so that when C++11 is detected, they just "wrap" the standard versions, whereas for too-old C++ compilers, boost provides its own implementation.
So if you aren't consistent with compiler versions (and -std= flags!), you can get a situation where boost and oiio don't agree on whether or not the C++ std version is required, and so it's not referenced properly and results in a link error.
boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >::maybe_assign(boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&)' libOpenImageIO_Util.so.1.5.19: undefined reference to
boost::re_detail::perl_matcher<gnu_cxx::normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits