Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用c++;而不是g++;-为什么? 我似乎有一个问题,要使我的MaFIX文件正确地构建我的C++文件。我的makefile代码如下;我试图编译的文件名为“avl.cc”(该文件工作正常,编译正确)_C++_Makefile - Fatal编程技术网

使用c++;而不是g++;-为什么? 我似乎有一个问题,要使我的MaFIX文件正确地构建我的C++文件。我的makefile代码如下;我试图编译的文件名为“avl.cc”(该文件工作正常,编译正确)

使用c++;而不是g++;-为什么? 我似乎有一个问题,要使我的MaFIX文件正确地构建我的C++文件。我的makefile代码如下;我试图编译的文件名为“avl.cc”(该文件工作正常,编译正确),c++,makefile,C++,Makefile,但是,当我输入命令make或makeall时,我得到 c++ avl.cc -o avl 我想要的-g标志中的调试符号不会出现。类似的makefile(仅更改PROGS变量)适用于类似的项目,因此我不确定我做错了什么。有人有什么建议吗?谢谢 您没有“avl”的目标,因此make使用默认规则 尝试将makefile更改为: CC=g++ CFLAGS=-g -O2 PROGS=avl all: $(PROGS) $(PROGS): $(CC) $(CFLAGS) -o $

但是,当我输入命令
make
makeall
时,我得到

c++     avl.cc   -o avl

我想要的
-g
标志中的调试符号不会出现。类似的makefile(仅更改
PROGS
变量)适用于类似的项目,因此我不确定我做错了什么。有人有什么建议吗?谢谢

您没有“avl”的目标,因此make使用默认规则

尝试将makefile更改为:

CC=g++
CFLAGS=-g -O2
PROGS=avl

all: $(PROGS)

$(PROGS):
    $(CC) $(CFLAGS) -o $@ $@.cc

.PHONY: clean
clean:
    rm $(PROGS)
发件人:

这是非常重要的,你要认识到它的有限范围 自动变量值可用:它们仅在 食谱。特别是,您不能在系统中的任何位置使用它们 规则的目标列表;它们在那里没有价值,将扩展到世界各地 空字符串

这样,你不能使用<代码> $@ /CODE作为规则,这意味着使用了MaFag文件的默认C++编译规则,并且因为你没有使用好的变量名,所以它们也被忽略了。


<> >代码> > CXX<代码> >代码> cFLAGs<代码> >代码> CXXFLASK< <代码>为C++。< /P>运行<代码> -P<代码>。您需要
CXX=g++
cxflags=-Wall-g-O2
;同样使用
remake
作为
remake-x
和(如果您的GNU
make
足够新)
make--trace
您希望
$@:
为您做什么?因为无论你期待什么,它都不会那么做。在make处理中,该变量在该点不存在。
CC=g++
CFLAGS=-g -O2
PROGS=avl

all: $(PROGS)

$(PROGS):
    $(CC) $(CFLAGS) -o $@ $@.cc

.PHONY: clean
clean:
    rm $(PROGS)