C 在Makefile中为GDB使用-g编译

C 在Makefile中为GDB使用-g编译,c,makefile,C,Makefile,刚开始使用Makefiles,我想知道如何包含-g命令(以及我需要的任何其他命令),以便编译我的程序以使用gdb运行。这是给我的Makefile。提前谢谢 include parallelDefs COMMON = dataGen.h utils.h IO.h parseCommandLine.h graph.h graphIO.h graphUtils.h parallel.h sequence.h blockRadixSort.h deterministicHash.h transpo

刚开始使用Makefiles,我想知道如何包含-g命令(以及我需要的任何其他命令),以便编译我的程序以使用gdb运行。这是给我的Makefile。提前谢谢

  include parallelDefs

COMMON = dataGen.h utils.h IO.h parseCommandLine.h graph.h graphIO.h graphUtils.h parallel.h sequence.h blockRadixSort.h deterministicHash.h transpose.h
GENERATORS = rMatGraph gridGraph powerGraph randLocalGraph addWeights randDoubleVector fromAdjIdx adjToEdgeArray adjElimSelfEdges

.PHONY: all clean
all: $(GENERATORS)

$(COMMON) :
    ln -s ../../common/$@ .

%.o : %.C $(COMMON)
    $(PCC) $(PCFLAGS) -c $< -o $@

rMatGraph : rMatGraph.o 
    $(PCC) $(PLFLAGS) -o $@ rMatGraph.o 

gridGraph : gridGraph.o 
    $(PCC) $(PLFLAGS) -o $@ gridGraph.o 

powerGraph : powerGraph.o 
    $(PCC) $(PLFLAGS) -o $@ powerGraph.o 

randLocalGraph : randLocalGraph.o 
    $(PCC) $(PLFLAGS) -o $@ randLocalGraph.o 

addWeights : addWeights.o 
    $(PCC) $(PLFLAGS) -o $@ addWeights.o

fromAdjIdx : fromAdjIdx.o 
    $(PCC) $(PLFLAGS) -o $@ fromAdjIdx.o

randDoubleVector : randDoubleVector.o
    $(PCC) $(PLFLAGS) -o $@ randDoubleVector.o

adjToEdgeArray : adjToEdgeArray.C $(COMMON)
    $(PCC) $(PCFLAGS) $(PLFLAGS) -o $@ adjToEdgeArray.C

adjElimSelfEdges : adjElimSelfEdges.C $(COMMON)
    $(PCC) $(PCFLAGS) $(PLFLAGS) -o $@ adjElimSelfEdges.C

clean :
    rm -f *.o $(GENERATORS)
    make clean -s -C data

cleansrc : 
    make -s clean
    rm -f $(COMMON) 
包括paralleledef
COMMON=dataGen.h utils.h IO.h parseCommandLine.h graph.h graphIO.h graphUtils.h parallel.h sequence.h blockRadixSort.h deterministicHash.h transpose.h
GENERATORS=rMatraph gridGraph powerGraph randLocalGraph addWeights randDoubleVector fromAdjIdx adjToEdgeArray AdjElimSelfEdge
.骗子:都是干净的
全部:$(发电机)
美元(普通):
ln-s.././common/$@。
%.o:%.C$(普通)
$(PCC)$(PCFLAGS)-c$<-o$@
rMatGraph:rMatGraph.o
$(PCC)$(PLFLAGS)-o$@rMatGraph.o
gridGraph:gridGraph.o
$(PCC)$(PLFLAGS)-o$@gridGraph.o
powerGraph:powerGraph.o
$(PCC)$(PLFLAGS)-o$@powerGraph.o
randLocalGraph:randLocalGraph.o
$(PCC)$(PLFLAGS)-o$@randLocalGraph.o
addWeights:addWeights.o
$(PCC)$(PLFLAGS)-o$@addWeights.o
fromAdjdx:fromAdjdx.o
$(PCC)$(PLFLAGS)-o$@fromajdjdx.o
randDoubleVector:randDoubleVector.o
$(PCC)$(PLFLAGS)-o$@randDoubleVector.o
adjToEdgeArray:adjToEdgeArray.C$(通用)
$(PCC)$(PCFLAGS)$(PLFLAGS)-o$@adjToEdgeArray.C
AdjelmSelfEdge:AdjelmSelfEdge.C$(通用)
$(PCC)$(PCFLAGS)$(PLFLAGS)-o$@adjelmselfedges.C
清洁:
rm-f*.o$(发电机)
清除-s-C数据
cleansrc:
使…干净
rm-f$(普通)

如果只应使用
-g
选项编译
randLocalGraph
,则需要明确的规则:

randLocalGraph.o: randLocalGraph.C $(COMMON)
        $(PCC) $(PCFLAGS) -g -c randLocalGraph.C -o $@

所有其他对象都将使用隐式规则创建。

哪些目标需要添加该标志?所有这些?定义了
PCC
PCFLAGS
的位置?我想您应该看看
paralleledefs
。盲目猜测:最常用的方法是使用
PCFLAGS+=-g
这一行的东西,只是randLocalGraph需要这个标志