我正在尝试编译包含两个源文件的程序:
wildcardtrie.h,wildcardtrie.cpp
使用Makefile。但是,当我运行GDB进行调试时,出现以下错误:

Reading symbols from /home/meric/Documents/Random/SectionLeading/wildcardtrie...(no    debugging symbols found)...done.

我尝试了许多不同的编译器标志,但没有一个起作用。让我感到困惑的是,我在其他程序中使用了几乎相同的Makefile,而缺少符号从来都不是问题。我在下面包含了Makefile:
CC=g++
CFLAGS = -g -ggdb g++ -O0 -Wall -Wfloat-equal -Wtype-limits -Wpointer-arith -Wlogical- op -fno-diagnostics-show-option

LDFLAGS = -g -ggdb -std=c++0x


programs = wildcardtrie


all : $(programs)

clean:
     rm -f $(programs) core *.o

.PHONY: clean all

我尝试在编译器和链接器标志中删除“-g”和“-ggdb”,但似乎无济于事。当我调用“make”时,在终端上得到以下输出:
g++    -c -o wildcardtrie.o wildcardtrie.cpp
g++  -g -ggdb -std=c++0x   wildcardtrie.o   -o wildcardtrie

任何帮助将不胜感激!

最佳答案



这清楚地表明-g不在您的编译行中(这正是导致您出现问题的原因)。

要在那里获得-g,可以将其添加到CXXFLAGS(这是首选的解决方案),或者只是显式地编写编译规则(而不是依赖于内置的make规则):

wildcardtrie.o: wildcardtrie.cpp
        $(CC) $(CFLAGS) -o wildcardtrie.o wildcardtrie.cpp

09-13 06:24