gpt4 book ai didi

c - 将 gdb 与 make 结合使用

转载 作者:行者123 更新时间:2023-11-30 18:24:57 25 4
gpt4 key购买 nike

我想在我的应用程序中使用 gdb 来调试所有库。我使用 make 来编译应用程序,如果我尝试 gdb,它会说没有找到调试符号

如何修改我的 makefile 以使用 -g 标志?

hospital: hospital.o config.o utils.o message.o semaphore.o sharedmem.o logger.o
gcc -o hospital hospital.o config.o utils.o message.o semaphore.o sharedmem.o logger.o
hospital.o: hospital.c
gcc -c hospital.c
sharedmem.o: sharedmem.c sharedmem.h
gcc -c sharedmem.c
message.o: message.c message.h
gcc -c message.c
semaphore.o: semaphore.c semaphore.h
gcc -c semaphore.c
config.o: config.c config.h
gcc -c config.c
logger.o: logger.c logger.h
gcc -c logger.c
utils.o: utils.c utils.h
gcc -c utils.c
clean:
rm -f *.o

最佳答案

您所问问题的答案是在编译目标文件时添加“-g”开关,即

hospital: hospital.o config.o utils.o message.o semaphore.o sharedmem.o     logger.o
gcc -o hospital hospital.o config.o utils.o message.o semaphore.o sharedmem.o logger.o
hospital.o: hospital.c
gcc -g -c hospital.c
sharedmem.o: sharedmem.c sharedmem.h
gcc -g -c sharedmem.c
message.o: message.c message.h
gcc -g -c message.c
semaphore.o: semaphore.c semaphore.h
gcc -g -c semaphore.c
config.o: config.c config.h
gcc -g -c config.c
logger.o: logger.c logger.h
gcc -g -c logger.c
utils.o: utils.c utils.h
gcc -g -c utils.c
clean:
rm -f *.o

但是,像这样的 Makefile 确实很难维护。 Make 可以为你做很多这样的事情,查看 this example这应该很适合您的项目。只需将“-g”添加到 CFLAGS 变量即可。

即使是更小的东西,像这样,也会做你想做的事:

PROGRAM := hostpital
SRCS := $(wildcard *.c)
OBJS := ${SRCS:.c=.o}
CFLAGS=-g

$(PROGRAM): $(OBJS)
$(CC) $(OBJS) -o $(PROGRAM)

clean:
@- $(RM) $(PROGRAM)
@- $(RM) $(OBJS)

注意:Makefile 在操作之前需要制表符。用制表符替换前导空格。

关于c - 将 gdb 与 make 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34514138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com