错误:#error 此文件需要编译器和库支持 ISO C++ 2011 标准

错误:#error 此文件需要编译器和库支持 ISO C++ 2011 标准

我正在使用某些集群在 Ubuntu 20.04 LTS 上使用 TAU(分析和分析工具)运行 C++ 代码。我正在运行的命令如下所示:

tau_cxx.sh -I$FFTW3_INC wrappingScript.cpp spectralFunctions.cpp arithmeticFunctions.cpp -optLinking="-lfftw3 -lm -g" -o ../../Datasim/TauTest.out

然而,这给了我以下错误:

Executing> /opt/apps/gcc/5.2.0/bin/g++ -I/opt/apps/gcc5_2/mvapich22_2/fftw/3.3.8/include wrappingScript.cpp spectralFunctions.cpp arithmeticFunctions.cpp -o ../../Datasim/TauTest.out
In file included from /arcapps/cascades-broadwell-slurm/opt/apps/gcc/5.2.0/include/c++/5.2.0/cstdint:35:0,
                 from arithmeticFunctions.cpp:8:
/arcapps/cascades-broadwell-slurm/opt/apps/gcc/5.2.0/include/c++/5.2.0/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support for the \
  ^

make: *** [all] Error 1

所以我尝试-std=c++11像这样编译:

tau_cxx.sh -I$FFTW3_INC -std=c++11 wrappingScript.cpp spectralFunctions.cpp arithmeticFunctions.cpp -optLinking="-lfftw3 -lm -g" -o ../../Datasim/TauTest.out

这不知何故弄乱了我-I$FFTW3_INC,我收到如下错误:

undefined reference to `fftw_malloc'

我也尝试将其链接到我的 TAU 选项中,例如:

tau_cxx.sh -I$FFTW3_INC wrappingScript.cpp spectralFunctions.cpp arithmeticFunctions.cpp -optLinking="-lfftw3 -lm -std=c++11 -g" -o ../../Datasim/TauTest.out

这没有任何效果,并给了我原来的错误。有人可以帮忙吗我很困惑。

答案1

添加(必需的)-std=c++11标志后(奇怪的是,现在的默认值是——即 ISO C++ 2017 + GNU 扩展——应该包括前面的),你可以编译它,但是(大概在某个库中)-std=gnu++17的定义fftw_malloc不见了。检查手册页fftw_malloc,它应该告诉你正确的咒语。如果这是从 a 调用的Makefile,请检查任何行LIB =或类似的行。

相关内容