Exh*_*xho 0 c++ gdb makefile g++
我无法在 gdb 中调试我的应用程序,因为符号表没有加载,我正在通过我的程序向后工作以确定导致这种情况发生的原因。提到的第一个建议是在编译时包含 -g 标志,我将其设置在我的 makefile 的 CFLAGS 部分中,但它似乎没有应用于我的文件。
如果不编写使用我的文件名进行硬编码的 makefile 以确保其正常工作,我将如何修改现有的 makefile 以确保将 -g 标志应用于所有已编译的文件?
$ make
g++ -c -o main.o main.cpp
g++ -c -o scanner.o scanner.cpp
g++ -g -Wall -Wno-unused-variable -o scanner main.o scanner.o
Run Code Online (Sandbox Code Playgroud)
我找到了这个 makefile 并插入了我的信息
CFLAGS = -g -Wall -Wno-unused-variable
OBJFILES = main.o scanner.o
TARGET = scanner
all: $(TARGET)
%.o: %.c
$(CC) $(CFLAGS) $< -c
$(TARGET): $(OBJFILES)
$(CC) $(CFLAGS) -o $(TARGET) $(OBJFILES)
.PHONY: clean
clean:
rm -f $(OBJFILES) $(TARGET) *~
Run Code Online (Sandbox Code Playgroud)
您只需要添加以下行:
CXXFLAGS = -g
Run Code Online (Sandbox Code Playgroud)
由于您的 Makefile 不提供从 C++ 构建的规则,Make 使用默认规则。这些规则将 CXXFLAGS 应用于编译命令,但不适用于 CFLAGS。不要覆盖默认规则;只需添加到 CXXFLAGS。我建议您删除 的规则%.o: %.c
,因为这是 Make 将使用的默认值,并且明确提供重复项没有任何好处。