在ArchLinux的发现-g
问题描述:
没有调试符号我有GDB的问题的Archlinux:在ArchLinux的发现-g
即使我添加-g
在我的Makefile GDB说(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}
在此先感谢
答
要添加-g
仅对链接命令。目标文件由make的自动编译目标生成。这里没有-g
标志。
您有2个选项 -
-
更改您的变量
CFLAG
到CFLAGS
并添加-g
它。在$(NAME)
目标之前%.o: %.c gcc -g $(CFLAG) -o [email protected] $<
-
CFLAGS
被自动编译命令采摘,它会创建调试信息 添加以下目标对象的文件。
第二个给你更多的控制目标,但第一种方法是标准的编译方式。
此外,总是尝试使用变量的标准名称,除非您特别需要单独命名它们。
您正在将'-g'仅添加到链接命令。自动编译命令不会得到'-g'标志。将'-g'添加到'CFLAGS'本身 –
标准变量是'CFLAGS',使用默认规则,因此您必须使用默认名称变量将标志添加到对象编译中。更多关于make的手册。 – Stargateur