我在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:
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}
型
1条答案
按热度按时间3duebb1j1#
你只是把
-g
添加到链接命令中。目标文件是由make的自动编译目标生成的。这里面没有-g
标志。你有两个选择-
1.将变量
CFLAG
更改为CFLAGS
并添加-g
。自动编译命令选择CFLAGS
,它将创建包含调试信息的目标文件1.增加以下目标-
%.o: %.c gcc -g $(CFLAG) -o $@ $<
个在
$(NAME)
目标之前。第二种方法可以让你更好地控制目标,但第一种方法是标准的编译方法。
此外,始终尝试使用标准名称的变量,除非您特别需要单独命名它们。