我正在尝试编译一个包含两个源文件的程序: 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
非常感谢任何帮助!
答案 0 :(得分:1)
g++ -c -o wildcardtrie.o wildcardtrie.cpp
这清楚地表明编译行中-g
不是(这正是导致问题的原因)。
要获得-g
,请将其添加到CXXFLAGS
(这是首选解决方案),或者只显式编写编译规则(而不是依赖于内置的make规则):
wildcardtrie.o: wildcardtrie.cpp
$(CC) $(CFLAGS) -o wildcardtrie.o wildcardtrie.cpp