gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:45:40 24 4
gpt4 key购买 nike

我在 Archlinux 中遇到 GDB 问题:

即使我在我的 Makefile gdb 中添加 -g 也会说 (未找到调试符号)...完成。

但是如果我手动编译 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)

我的生成文件:

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 个选择 -

  1. 更改变量 CFLAGCFLAGS并添加 -g给它。 CFLAGS由自动编译命令选择,它将创建带有调试信息的目标文件

  2. 添加以下目标 -

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

    $(NAME) 之前目标。

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

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

关于c - 使用 -g 在 ArchLinux 中找不到调试符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46673096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com