GCC 4.8.4 Ошибка в виртуальной машине Ubuntu 14.04: флаг -std= C++11 не обнаружен

Я смотрел всюду онлайн и не могу найти решение этой проблемы. Я пробовал флаги -std= C++11, -std= C++0x и -std= C++1y в файле makefile и env, которые не влияют на следующие ошибки:

'to_string' is not a member of 'std'
range based 'for' loops are not allowed in C++98 mode

Я пытаюсь запустить программу на C++, созданную поверх RepastHPC, которая работает на виртуальной машине Ubuntu 14.04 VirtualBox. И make-файл для самого RepastHPC, и файл env для кода C++ содержат флаг. Файл env используется в make-файле для кода C++, поэтому он не пропущен.

# Repast HPC 
# ENVIRONMENT DEFINITIONS

MPICXX=/home/repasthpc/repast_hpc-2.1.0/INSTALLATION/mpich-3.1.4/src/env/mpicxx
-std=c++11 -D USE_CPP11 -stdlib=libc++

BOOST_INCLUDE=-I/usr/local/include/
BOOST_LIB_DIR=-L/usr/local/lib/
BOOST_LIBS=-lboost_mpi-mt-s -lboost_serialization-mt-s -lboost_system-mt-s -lboost_filesystem-mt-s

REPAST_HPC_INCLUDE=-I/usr/local/include/
REPAST_HPC_LIB_DIR=-L/usr/local/lib/
REPAST_HPC_LIB=-lrepast_hpc-2.1

TISSUE_INCLUDE=-I/Users/repasthpc/Desktop/hpcmodel/angiogenesis_osteogenesis_simulator/src/

------------------------------------------------------------

# Repast HPC
# MANUAL BUILD MAKEFILE

# VARIABLES (Supply values for these; for definitions and examples, see INSTALL)
CXX=mpicxx      -std=c++11 -D USE_CPP11
CXXLD=mpicxx
BOOST_INCLUDE_DIR=/usr/local/include
BOOST_LIB_DIR=/usr/local/lib
BOOST_INFIX=-mt
NETCDF_INCLUDE_DIR=/usr/local/include
NETCDF_LIB_DIR=/usr/local/lib
CURL_INCLUDE_DIR=/usr/local/include
CURL_LIB_DIR=/usr/local/lib

** Это не конец make-файла, но это конец соответствующего раздела **

Какие-нибудь мысли? Я полностью сбит с толку.

Спасибо! Rachael

1 ответ

Решение

Просто пара проблем с этим Makefile:

1) CXX=mpicxx не делает то, что вы собираетесь.

Правильный способ сделать это

CXX=$(MPICXX)

Это переводится как:

CXX=/home/repasthpc/repast_hpc-2.1.0/INSTALLATION/mpich3.1.4/src/env/mpicxx

2) Также обратите внимание, что -std=c++11 -D USE_CPP11 -stdlib=libc++ часть не включена в CXX выше. Это потому, что нам нужно '\', чтобы сказать Make, что есть и другая строка.

Так что попробуйте это:

MPICXX=/home/repasthpc/repast_hpc-2.1.0/INSTALLATION/mpich-3.1.4/src/env/mpicxx \
-std=c++11 -D USE_CPP11 -stdlib=libc++

BOOST_INCLUDE=-I/usr/local/include/
BOOST_LIB_DIR=-L/usr/local/lib/
BOOST_LIBS=-lboost_mpi-mt-s -lboost_serialization-mt-s -lboost_system-mt-s -lboost_filesystem-mt-s

REPAST_HPC_INCLUDE=-I/usr/local/include/
REPAST_HPC_LIB_DIR=-L/usr/local/lib/
REPAST_HPC_LIB=-lrepast_hpc-2.1

TISSUE_INCLUDE=-I/Users/repasthpc/Desktop/hpcmodel/angiogenesis_osteogenesis_simulator/src/

------------------------------------------------------------

# Repast HPC
# MANUAL BUILD MAKEFILE

# VARIABLES (Supply values for these; for definitions and examples, see INSTALL)
CXX=$(MPICXX)      -std=c++11 -D USE_CPP11
CXXLD=$(MPICXX)
BOOST_INCLUDE_DIR=/usr/local/include
BOOST_LIB_DIR=/usr/local/lib
BOOST_INFIX=-mt
NETCDF_INCLUDE_DIR=/usr/local/include
NETCDF_LIB_DIR=/usr/local/lib
CURL_INCLUDE_DIR=/usr/local/include
CURL_LIB_DIR=/usr/local/lib
Другие вопросы по тегам