我有一个系统,我使用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.
如果我需要提供任何其他信息,请告诉我。
答案 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