【问题标题】:gcc 4.8.2 cc1plus: error: unrecognized command line option "-std=gnu++11"gcc 4.8.2 cc1plus:错误:无法识别的命令行选项“-std=gnu++11”
【发布时间】:2017-01-22 16:39:17
【问题描述】:

我有一个系统,我一直在使用 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

【问题讨论】:

  • 我认为开关中不应该有双破折号,只有一个-std=...

标签: c++11 gcc makefile automake


【解决方案1】:

我解决了这个问题。

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

现在,其他用户在较新版本中拥有 g++ 的别名,但他们的 $PATH 省略了实际位置。

根据他们的 $PATH 变量制作作品,所以要修复它,我只需要确保他们的路径与我的路径相同。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 正如我所说,如果我只做 g++ --std=g++11 那就没问题了。
    • 为我制作的 make 文件和在命令行上为他们执行 g++ --std=gnu++11 的工作,但 make 文件对他们不起作用。
    猜你喜欢
    • 2016-08-09
    • 1970-01-01
    • 2015-02-05
    • 2015-11-12
    • 2013-01-18
    • 2016-02-10
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    相关资源
    最近更新 更多