c - 在创建 makefile 时,如何创建调试目标以及正常构建程序的默认目标?

标签 c makefile gdb

我正在编写 makefile 来构建我的程序。

我想知道调试命令。

我已经编写了用于编译和清理的 makefile

all: perfect.c
    gcc -g -o perfect perfect.c
clean:
    rm -f perfect

你能帮我写调试吗?默认目标是什么意思?

最佳答案

在继续学习 make 文件的基础知识之前。您可以从 this link 开始

Can you help me in writing for debug?

您的 make 文件已编写用于调试(使用 -g 编译器标志)

 what does it mean default target?

默认目标是您的第一个目标。在您的情况(以及大多数情况下),它是all,即如果您只是调用make,那么必须执行什么规则。要清理,您必须给出 make clean,但对于 taget all,您可以调用 make all 或仅调用 make。由于 all 是第一个目标,因此默认情况下会执行它。如果您在开头写入 clean,则 clean 将成为默认目标。

让我们重写您的 makefile 以进行正常构建和调试构建。

all: perfect.c
     gcc -o perfect perfect.c
debug: perfect.c
      gcc -g -o perfect-debug perfect.c
clean:
      rm -rf perfect perfect-debug

因此,如果您运行 make all 或仅运行 make perfect.c 将在没有调试选项的情况下构建。如果您运行make debug,那么perfect.c将使用调试选项构建。

关于c - 在创建 makefile 时,如何创建调试目标以及正常构建程序的默认目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26087793/

相关文章:

c - mkmf 在编译 C 扩展时忽略子文件夹中的文件

c++ - 在 gdb/Ubuntu 14.04.4 LTS 中加载 dl-debug.c

linux - 在堆栈上查找数组/缓冲区的绝对大小

c - 在 C 中对链表进行排序

C静态变量和linux fork

c - 如何在 malloc 字符串上使用 fread

linux - Windows 上文件扩展名的问题

linux - 创建 Docker 镜像时 Makefile 错误

c++ - NetBeans 生成的 Makefile 忽略测试返回码

c++ - 忽略来自 gdb 中包含/库文件的调试消息(终端)