gcc 在ArchLinux中找不到带有-g的调试符号

sqxo8psd  于 4个月前  发布在  Linux
关注(0)|答案(1)|浏览(60)

我在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}

3duebb1j

3duebb1j1#

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

相关问题