我在 Archlinux 中遇到 GDB 问题:
即使我在我的 Makefile gdb 中添加 -g
也会说 (未找到调试符号)...完成。
。
但是如果我手动编译 gcc -g *.c
它会工作...
我不知道什么在我的 Makefile 中不起作用?
我的 ArchLinux:
Linux sime_arch 4.13.4-1-ARCH #1 SMP PREEMPT Thu Sep 28 08:39:52 CEST 2017 x86_64 GNU/Linux
我的海湾合作委员会:
gcc version 7.2.0 (GCC)
我的生成文件:
SRC = test.c \
test2.c
OBJ = $(SRC:.c=.o)
NAME = test_name
CFLAG = -Wall -Werror -Wextra
all: $(NAME)
$(NAME): $(OBJ)
gcc -g $(OBJ) -o $(NAME) $(CFLAG)
clean:
rm -f $(OBJ)
fclean: clean
rm -f $(NAME)
re: fclean all}
提前致谢
最佳答案
您正在添加 -g
仅链接命令。目标文件由 make 的自动编译目标生成。这没有 -g
旗帜在里面。
您有 2 个选择 -
更改变量
CFLAG
至CFLAGS
并添加-g
给它。CFLAGS
由自动编译命令选择,它将创建带有调试信息的目标文件添加以下目标 -
%.o: %.c gcc -g $(CFLAG) -o $@ $<
在
$(NAME)
之前目标。
第二种方法可以让您更好地控制目标,但第一种方法是标准的编译方式。
此外,请始终尝试为变量使用标准名称,除非您特别需要单独命名它们。
关于c - 使用 -g 在 ArchLinux 中找不到调试符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46673096/