Error: #error Este archivo requiere compatibilidad con el compilador y la biblioteca para el estándar ISO C++ 2011

Error: #error Este archivo requiere compatibilidad con el compilador y la biblioteca para el estándar ISO C++ 2011

Estoy ejecutando un código C++ con TAU (herramienta de análisis y creación de perfiles) en Ubuntu 20.04 LTS usando algún clúster. El comando que estoy ejecutando se ve así:

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

Sin embargo, esto me está dando el siguiente error:

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

Así que intenté compilar -std=c++11así:

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

Esto de alguna manera me arruina -I$FFTW3_INCy recibo errores como:

undefined reference to `fftw_malloc'

También intenté vincularlo en mis opciones de TAU como:

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

Esto no tuvo ningún efecto y me dio el error original. ¿Alguien puede ayudarme, por favor? Estoy confundido.

Respuesta1

Después de agregar el indicador (obligatorio) -std=c++11(extraño, el valor predeterminado ahora es -std=gnu++17, es decir, extensiones ISO C++ 2017 + GNU, que debería incluir el anterior), lo compila, pero la definición de fftw_malloc(presumiblemente en alguna biblioteca) Está perdido. Consulte la página del manual fftw_malloc, debería indicarle el encantamiento correcto. Si esto se llama, por ejemplo, desde a Makefile, verifique las líneas LIB =o algo similar.

información relacionada