![Ошибка: #error Для этого файла требуется поддержка компилятора и библиотеки для стандарта ISO C++ 2011.](https://rvso.com/image/191772/%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0%3A%20%23error%20%D0%94%D0%BB%D1%8F%20%D1%8D%D1%82%D0%BE%D0%B3%D0%BE%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B0%20%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D1%82%D1%81%D1%8F%20%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%B0%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D0%B0%20%D0%B8%20%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8%20%D0%B4%D0%BB%D1%8F%20%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%B0%20ISO%20C%2B%2B%202011..png)
Я запускаю код C++ с TAU (анализирующим и профилирующим инструментом) на Ubuntu 20.04 LTS с использованием некоторого кластера. Команда, которую я запускаю, выглядит так:
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
флага (странно, по умолчанию сейчас -std=gnu++17
--т. е. ISO C++ 2017 + расширения GNU--, которые должны включать предыдущий), вы получаете его для компиляции, но определение для fftw_malloc
(предположительно в какой-то библиотеке) отсутствует. Проверьте страницу руководства для fftw_malloc
, она должна подсказать вам правильное заклинание. Если это вызывается, например, из Makefile
, проверьте все строки LIB =
или что-то подобное.