我遇到了 gcc 不产生调试符号的奇怪问题,非常感谢一些帮助。
诚然,我可能在这里做了一些愚蠢的事情,但我没有忘记 -g 或 -ggdb,而且我也没有在里面偷偷 -s。这是信息:
我有一个名为 list 的静态库(这是一项学校作业),以及两个以不同方式包含它的程序。
在 main(编译为fifo
)列表中包含为#include "list.h"
,而在 prodcons 中,它包含为#include "list/list.h"
当我在编译文件上运行 gdb 时,prodcons
我收到消息“未找到调试符号”,编译fifo
文件也是如此。根据该file
命令,两个文件都不会被剥离。
文件结构:
.
├── list
│ ├── list.c
│ ├── list.h
│ ├── main.c
│ └── Makefile
├── makefile
├── prodcons.c
为清楚起见,排除了 .o 文件和二进制文件。
以下是 make 文件: list/Makefile: all: fifo liblist.a
OBJS = list.o main.o
LIBS= -lpthread
fifo: ${OBJS}
gcc -o $@ ${OBJS} ${LIBS} -ggdb
liblist.a: list.o
ar rcs liblist.a list.o
clean:
rm -rf *o fifo
./makefile:
prodcons: prodcons.o
gcc -g -static -Wall -I./list -L./list -o $@ prodcons.o -llist -lpthread
clean:
@@rm prodcons prodcons.o
那么,那里有任何大师,准备好施展他们的魔法了吗?:)