C++ GDB未找到调试符号
我试图编译一个由两个源文件组成的程序: wildcardtrie.h,wildcardtrie.cpp 使用Makefile。但是,当我运行GDB进行调试时,会出现以下错误:C++ GDB未找到调试符号,c++,debugging,makefile,gdb,g++,C++,Debugging,Makefile,Gdb,G++,我试图编译一个由两个源文件组成的程序: wildcardtrie.h,wildcardtrie.cpp 使用Makefile。但是,当我运行GDB进行调试时,会出现以下错误: Reading symbols from /home/meric/Documents/Random/SectionLeading/wildcardtrie...(no debugging symbols found)...done. 我尝试了许多不同的编译器标志,但都不起作用。让我困惑的是,我在其他程序中使用了几乎
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++-c-o wildcardtrie.o wildcardtrie.cpp
这清楚地表明-g
不在编译行上(这正是问题的原因)
要在那里获得-g
,请将其添加到cxflags
(这是首选解决方案),或者只需显式编写编译规则(而不是依赖内置的make规则):
在构建C++程序时,<>代码> <代码> >使用<代码> CXX和
make clean
之后,请在问题中包含该输出。我认为您确实需要阅读更多关于make
的内容。makeclean
中的clean
调用makefile中的clean
目标。
wildcardtrie.o: wildcardtrie.cpp
$(CC) $(CFLAGS) -o wildcardtrie.o wildcardtrie.cpp