GCC 4.8.4 Ubuntu 14.04 VM出错:未检测到-std = c ++ 11标志

时间:2015-07-23 21:43:06

标签: ubuntu c++11 gcc makefile repast-hpc

我在网上到处都看,似乎无法找到解决这个问题的方法。我在makefile和env文件中尝试了-std = c ++ 11,-std = c ++ 0x和-std = c ++ 1y标志,所有这些都对以下错误没有影响:

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

我正在尝试运行构建在RepastHPC之上的C ++程序,该程序在Ubuntu 14.04 VirtualBox VM上运行。 RepastHPC本身的makefile和C ++代码的env文件都包含该标志。 env文件用于C ++代码的makefile中,因此不会遗漏它。

# 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

**这不是makefile的结尾,但它是相关部分的结尾**

有什么想法?我很困惑。

谢谢! 雷切

1 个答案:

答案 0 :(得分:0)

这个Makefile只有几个问题:

1) setAction() 不符合您的意图。

正确的方法是

CXX=mpicxx

这转换为:

CXX=$(MPICXX)

2) 另请注意,CXX=/home/repasthpc/repast_hpc-2.1.0/INSTALLATION/mpich3.1.4/src/env/mpicxx 部分未包含在上述CXX中。这是因为我们需要'\'来告诉Make还有另一条线。

所以试试这个:

-std=c++11 -D USE_CPP11 -stdlib=libc++