我是一个在makefile和使用多个文件的项目中都是新手。我现在正在处理的项目有一个main.c和两个用户库。以下是makefile代码:
CC = gcc
OBJECTS = main.o path.o util.o
9_1 : $(OBJECTS)
$(CC) -g $(OBJECTS) -o 9_1
main.o : main.c path.h util.h
$(CC) -g -c main.c path.h util.h
path.o : path.c path.h util.h
$(CC) -g -c path.c path.h util.h
util.o : util.c util.h
$(CC) -g -c util.c util.h
.PHONY : clean
clean :
rm $(OBJECTS)
我希望能够在Emacs中调试这个项目(使用多窗口变量),但是当我运行gdb -i=mi 9_1
(默认选项)并尝试在main.c中添加断点时,它不允许我这样做。具体来说:我运行b main.c:25
,但是会得到如下结果:
No symbol table is loaded. Use the "file" command.
Breakpoint 1 (main.c:25) pending
我应该怎么做?
$(CC) -g -c main.c path.h util.h
意为编译main.c
、path.h
和util.h
这三个文件,但是在实际操作中应该只编译main.c
,不需要编译头文件。因此建议改为$(CC) -g -c main.c
。 - Jean-François Fabre