Мне нужно построить Boost 1.62 и 1.63 на машине Fedora 24, но с использованием GCC 4.9.3 или GCC 5.4.0 (в зависимости от версии CUDA, из-за которой мне нужен старый компилятор). Но если установить версию пользовательских GCC, как описано в this answer и запуститьBoost build failed C++ 11 проверка функций при использовании (пользовательская) GCC 4.x или 5.x
/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)?
@JanHudec: CUDA 7.5 поддерживает только версии GCC до 4.9.x – einpoklum
Вам, вероятно, потребуется передать '--std = C++ 11' или' --std = C++ 0x'. Возможно, что-то вроде [этого ответа] (http://stackoverflow.com/a/18452918/2417774). gcc 6.2.1 по умолчанию использует '--std = C++ 14'. – llonesmiz
@ jv_: Это, похоже, не работает, к сожалению. – einpoklum