gcc 4.8.2 cc1plus:错误:无法识别的命令行选项“-std = gnu ++ 11”

时间:2016-09-14 19:00:18

标签: c++11 gcc makefile automake

我有一个系统,我使用automake用C ++ 11编译程序,一切都在工作。

但是,当不同的用户使用相同的Makefile时,他们会得到上述错误。

现在,如果他们输入g++ --std=gnu++11 program.cpp,那么就没有抱怨。

我把它缩小到导致问题的一条线;但是,我不知道如何解决它。

depbase=`echo no_endl.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
        g++ -DHAVE_CONFIG_H -I. -I../..    -g --std=gnu++11 -g -O2 -MT no_endl.o -MD -MP -MF $depbase.Tpo -c -o no_endl.o no_endl.cpp &&\
        mv -f $depbase.Tpo $depbase.Po

问题在于depbase;但是,我不知道它是怎么回事,或者为什么会这样。

下面是我用来生成Makefile的Automake文件:

bin_PROGRAMS = no_endl
AM_CXXFLAGS = -g --std=gnu++11
no_endl_SOURCES = no_endl.cpp

我的g ++和他们的g ++之间的唯一区别是我有一个别名,所以g++变成了g++ -g

有用的信息

g++ --version                                                          
g++ (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

如果我需要提供任何其他信息,请告诉我。

Related Question

2 个答案:

答案 0 :(得分:2)

我解决了这个问题。

问题是我和其他用户的$PATH变量。

现在,其他用户的g++别名为较新版本,但他们的$PATH会忽略实际位置。

根据$PATH变量制作作品,为了解决这个问题,我必须确保他们的路径与我的路径相同。

答案 1 :(得分:0)

您可能需要以下额外的m4宏文件来处理替代C ++ 11编译器的极端情况。

https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html#ax_cxx_compile_stdcxx_11