AcademySoftwareFoundation / OpenImageIO

Reading, writing, and processing images in a wide variety of file formats, using a format-agnostic API, aimed at VFX applications.
https://openimageio.readthedocs.org
Apache License 2.0
1.97k stars 597 forks source link

Build fail on 1.5.19 #1215

Closed Justinzobel closed 9 years ago

Justinzobel commented 9 years ago
lgritz commented 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.

Justinzobel commented 9 years ago

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.

lgritz commented 9 years ago

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.