使用-g在ArchLinux中找不到调试符号

时间:2017-10-10 18:00:51

标签: c linux gcc makefile gdb

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

提前致谢

1 个答案:

答案 0 :(得分:3)

您只将-g添加到链接命令。目标文件由make的自动编译目标生成。它没有-g标志。

您有2个选项 -

  1. 将变量CFLAG更改为CFLAGS并向其添加-g。自动编译命令选择CFLAGS,它将使用调试信息

  2. 创建目标文件
  3. 添加以下目标 -

    %.o: %.c gcc -g $(CFLAG) -o $@ $<

    $(NAME)目标之前。

  4. 第二种方法可以让您更好地控制目标,但第一种方法是标准的编译方式。

    此外,除非您特别需要单独命名,否则请始终尝试使用变量的标准名称。