![cc1plus:错误:无法识别的命令行选项“-std=c++11”。我在安装 HElib-master 时遇到此错误](https://linux22.com/image/1144557/cc1plus%EF%BC%9A%E9%94%99%E8%AF%AF%EF%BC%9A%E6%97%A0%E6%B3%95%E8%AF%86%E5%88%AB%E7%9A%84%E5%91%BD%E4%BB%A4%E8%A1%8C%E9%80%89%E9%A1%B9%E2%80%9C-std%3Dc%2B%2B11%E2%80%9D%E3%80%82%E6%88%91%E5%9C%A8%E5%AE%89%E8%A3%85%20HElib-master%20%E6%97%B6%E9%81%87%E5%88%B0%E6%AD%A4%E9%94%99%E8%AF%AF.png)
我安装了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 支持一起使用。
您没有给出使用这样一个旧的编译器的任何理由。