我需要在 Fedora 24 机器上构建 Boost 1.62 和 1.63,但使用 GCC 4.9.3 或 GCC 5.4.0(取决于版本 CUDA,这就是我需要旧编译器的原因)。但是,如果我按照此答案中的描述设置自定义 GCC 版本并运行
/b2 --toolset=gcc-5.4.0 stage
令我懊恼的是,我现在看到:
- 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
也就是说,很多 C++11 特性据说是缺失的,但它们不应该缺失。使用发行版的 GCC 版本 (6.2.1) 构建它时不会发生这种情况。
为什么会发生这种情况,我应该怎么做才能让 Boost 版本识别我的 GCC 5.4.0(或 4.9.3)的功能?