【问题标题】:Makefile for use with gdb与 gdb 一起使用的 Makefile
【发布时间】:2019-07-28 09:28:25
【问题描述】:

我需要帮助配置我的 makefile 以将它与 GNU 调试器一起使用。我在 debian 上运行它。

我对 makefile 很陌生,在经历了类似的问题之后,我尝试将这些答案的答案调整到我的代码中,但它并没有按照我尝试的方式解决(可能是因为我不完全理解语法生成文件)。

这是原始的(缩短的)makefile:

INC=-I include

all: libs poisson_solver

poisson_solver:
    g++ -o  bin/poisson $(INC) src/main.c\ src/problem_setup.c\ libs/timer_tools.o

libs: libs/timer_tools.o src/problem_setup.o

libs/timer_tools.o: utilities/gettime.c
    g++ -c -o libs/timer_tools.o $(INC) utilities/gettime.c

src/problem_setup.o: src/problem_setup.c include/problem_setup.h
    g++ -c -o src/problem_setup.o $(INC) src/problem_setup.c include/problem_setup.h

【问题讨论】:

  • 传递选项-g 用于在创建对象时添加调试信息。
  • 您的意思是例如:g++ -g -o bin/poisson $(INC) src/main.c\ ?调用可执行文件时这不会改变任何内容
  • 您的具体问题是什么?描述你做了什么,你看到了什么以及你期望什么。
  • 我在声明 Segmentation fault (core dumped) 时遇到错误,我想看看是哪些行导致了它。我现在发现了自己的错误,对于非运行时错误,我得到了错误所在的行,所以现在应该没问题

标签: c++ makefile gdb g++


【解决方案1】:

您的Makefile 有几个错误,并且通常包含比应有的更多内容。

大致应该是这样的:

CFLAGS = -Iinclude -g
OBJS = src/main.o src/problem_setup.o utilities/gettime.o

all: poisson_solver

poisson_solver: $(OBJS)
src/problem_setup.o: src/problem_setup.c include/problem_setup.h

参见手册的this section

【讨论】:

  • 我按照你的建议尝试了,但现在我得到了recipe commences before first target. Stop. 这次我能够使用我的“错误”makefile 让它运行,我只需要阅读你的手册建议下次我创建类似案例时
猜你喜欢
  • 1970-01-01
  • 2019-07-07
  • 1970-01-01
  • 2016-12-09
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多