cc1plus:错误:无法识别的命令行选项“-std=c++11”。我在安装 HElib-master 时遇到此错误

cc1plus:错误:无法识别的命令行选项“-std=c++11”。我在安装 HElib-master 时遇到此错误

我安装了gcc 4.6.3 请帮我解决这个问题。首先我配置了GMP然后配置了NTL,但是在构建时HElib出现此错误。当我键入 make 命令时,它显示以下错误:

cc1plus: error: unrecognized command line option -std=c++11

答案1

GCC 4.6.x 早于对 C++11 标准的支持,因此不提供 -std=c++11。它以实验方式预测 C++11 并提供-std=c++0x 以启用该实验支持。-std=c++11首先在 GCC 4.7.x 中可用。如果您无法升级到较新的编译器,请更改 -std=c++11-std=c++0x

继续 OP 的评论

也许你还没有INSTALL.TXT读过HELib包?具体来说:

在构建 HElib 之前,您可能需要查看 Makefile,并考虑调整 CC 和 CFLAGS 的一些默认值。大多数系统上的默认值应该没问题,但您可以查看建议的选项,这些选项记录在 Makefile 中。

按照此建议,编辑src/Makefile,找到:

CFLAGS = -g -O2 -std=c++11 -pthread -DFHE_THREADS -DFHE_DCRT_THREADS -DFHE_BOOT_THREADS

并更改-std=c++11-std=c++0x

请注意,进行此更改后,不能保证使用 gcc 4.6.3(一个非常旧的编译器版本)成功构建项目;但如果不进行此更改,gcc 4.6.3 根本无法与任何程度的 C++11 支持一起使用。

您没有给出使用这样一个旧的编译器的任何理由。

相关内容