我在Archlinux中遇到GDB问题:
即使我在Makefile gdb中添加-g
说(no debugging symbols found)...done.
。
但是如果我手动编译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)
我的Makefile:
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}
提前致谢
答案 0 :(得分:3)
您只将-g
添加到链接命令。目标文件由make的自动编译目标生成。它没有-g
标志。
您有2个选项 -
将变量CFLAG
更改为CFLAGS
并向其添加-g
。自动编译命令选择CFLAGS
,它将使用调试信息
添加以下目标 -
%.o: %.c
gcc -g $(CFLAG) -o $@ $<
在$(NAME)
目标之前。
第二种方法可以让您更好地控制目标,但第一种方法是标准的编译方式。
此外,除非您特别需要单独命名,否则请始终尝试使用变量的标准名称。