“这个库现在需要 C++11 或更高版本的编译器......”在编译 boost 库的“number_base.hpp”时

Posted

技术标签:

【中文标题】“这个库现在需要 C++11 或更高版本的编译器......”在编译 boost 库的“number_base.hpp”时【英文标题】:"This library now requires a C++11 or later compiler..." when compiling 'number_base.hpp' of boost library 【发布时间】:2021-11-10 17:25:35 【问题描述】:

我有一个使用 boost 1.77.0 库的 c++ 项目。编译器是 g++ 4.8.5,据我所知,它支持 c++11 标准。以下命令用于编译项目:

g++ -std=c++11 main.cpp Logger.cpp MOCMesh.cpp Mesh.cpp CFDMesh.cpp Solver.cpp -o main -I../tools -I/usr/code/include -I. -L/usr/code/lib -lgmp -lphtread -lmpfr

但是,我收到错误提示 c++ 标准不满足:

/usr/code/include/boost/multiprecision/detail/number_base.hpp:36:2: error: #error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_HDR_TYPE_TRAITS being set"
 #error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_HDR_TYPE_TRAITS being set"
...

由于某些原因,我无法将 GNU 编译器更新到最新或更高版本,那么有谁知道如何解决这个问题?

【问题讨论】:

IIRC,GCC 4.9 是第一个完全支持 C++11 的版本。可以使用不需要 C++11 的旧版本的 boost 库吗? 即使是 4.9 也是古老的。如果可以的话,你真的应该升级 GCC。现在是第 11 版,正在开发第 12 版。 为什么不能升级到更高的版本? GCC 4.8.0 于 2013 年 3 月发布,点点版本 GCC 4.8.5 于 2015 年 6 月发布。该时间范围的 Boost 版本是 1.54 到 1.57。如果 1.77 已经超越 GCC 4.8.5 的支持,这不足为奇。 【参考方案1】:

使用该时间段的旧版本提升

【讨论】:

以上是关于“这个库现在需要 C++11 或更高版本的编译器......”在编译 boost 库的“number_base.hpp”时的主要内容,如果未能解决你的问题,请参考以下文章