我正在尝试编译包含两个源文件的程序:
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