I need to build Boost 1.62 and 1.63 on a Fedora 24 machine, but using GCC 4.9.3 or GCC 5.4.0 (depending on the version CUDA, which is the reason why I need an older compiler). But if I set the custom GCC version as described in this answer and run
/b2 --toolset=gcc-5.4.0 stage
To my chagrin, I now see:
- 32-bit : no
- 64-bit : yes
- arm : no
- mips1 : no
- power : no
- sparc : no
- x86 : yes
- symlinks supported : yes
- C++11 mutex : no
- lockfree boost::atomic_flag : yes
- Boost.Config Feature Check: cxx11_auto_declarations : no
- Boost.Config Feature Check: cxx11_constexpr : no
- Boost.Config Feature Check: cxx11_defaulted_functions : no
- Boost.Config Feature Check: cxx11_final : yes
- Boost.Config Feature Check: cxx11_hdr_tuple : no
- Boost.Config Feature Check: cxx11_lambdas : no
- Boost.Config Feature Check: cxx11_noexcept : no
- Boost.Config Feature Check: cxx11_nullptr : no
- Boost.Config Feature Check: cxx11_rvalue_references : no
- Boost.Config Feature Check: cxx11_template_aliases : no
- Boost.Config Feature Check: cxx11_thread_local : no
- Boost.Config Feature Check: cxx11_variadic_templates : yes
i.e. a lot of C++11 features are supposedly missing, while they should not be. This does not occur when building it with the distribution's GCC version (6.2.1).
Why is this happening and what should I do to make the Boost build recognize my GCC 5.4.0 (or 4.9.3)'s capabilities?
--std=c++11
or--std=c++0x
. Maybe something like this answer. gcc 6.2.1 probably uses--std=c++14
by default. – Moxieb2 toolset=gcc stage
-> everythingyes
.b2 toolset=clang stage
->mostlyno
a couple ofyes
. After removing directorybin.v2
(to avoid the cached results),b2 toolset=clang cxxflags="--std=c++11" stage
-> everythingyes
(except thread_local). – MoxieBOOST_ROOT/bin.v2
. That is the directory I deleted. – Moxie-std=c++14
in my jam file but this doesn't change behavior. – Rafaello