【发布时间】:2013-11-28 08:34:12
【问题描述】:
我正在尝试编译一个由两个源文件组成的程序: 通配符trie.h,通配符trie.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
任何帮助将不胜感激!
【问题讨论】:
-
在构建 C++ 程序时,
make使用CXX和CXXFLAGS变量。 -
另外,同时拥有
-g和-ggdb是多余的。 -
您还需要将链接器更改为
g++:LD = g++。 -
当你在控制台中运行
make时,你会得到很多输出。请在运行make clean后在问题中包含该输出。 -
我认为你真的需要阅读更多关于
make的信息。make clean中的clean调用 makefile 中的clean目标。
标签: c++ debugging makefile gdb g++