Makefile 致命错误:无法创建 obj/calc.o

2023-12-09

我正在尝试为大学项目的简单计算器制作一个生成文件。我需要完成它,我在网上搜索了教程,最终找到了这段代码:

IDIR =include
CC=gcc
CFLAGS=-I$(IDIR)

ODIR=obj
LDIR=lib
SDIR=src

LIBS=-lm

_DEPS = calc.h
DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))

_OBJ = calc.o libcalc.o 
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))


$(ODIR)/%.o: $(SDIR)/%.c $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS)

calc: $(OBJ)
    gcc -o $@ $^ $(CFLAGS) $(LIBS)

.PHONY: clean

clean:
    rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~ 

make命令的输出是

gcc -c -o obj/calc.o calc.c -I../include
Assembler messages:
Fatal error: can't create obj/calc.o: No such file or directory
make: *** [obj/calc.o] Error 1

我的教授没有给我们任何指导或指示,所以我真的迷失了。

我的项目分为三个文件夹:lib, src and include. src包含项目的源代码,名为calc.c, include包含名为calc.h, and lib包含名为的库libcalc.c.

编辑:我发现了这个错误,那就是obj目录下src没有被创建。但是,它仍然不起作用。新的错误消息是:

make: *** No rule to make target `obj/libcalc.o', needed by `calc'.  Stop.

编辑2:我刚刚将 libcalc.c 从 lib 移动到 obj 并且工作正常。不理想,但它满足了我的需要。


The obj目录不存在,所以gcc无法在那里写入输出文件。

您可以从 Makefile 自动创建它,但取决于您想要做什么,一个简单的mkdir obj可能就是您所需要的。

但是,看起来您正在从以下位置运行 Makefilesrc目录。您可能想从项目的根目录运行它并指定src/在需要的地方。你想要添加一个SDIR变量(或类似变量);确保删除../ on LDIR, IDIR and ODIR在这种情况下。

例如,您当前使用的地方%.c, use $(SDIR)/%.c相反,并适当地移动你的 Makefile。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Makefile 致命错误:无法创建 obj/calc.o 的相关文章

随机推荐

  • 扩展 Material UI 主题中的排版

    是否可以在 Material UI 主题中定义额外的字体 字体系列 我想要得到这样的东西 export const theme createMuiTheme typography fontFamily Open Sans sans seri
  • iPhone SDK,如何获取周五20:00的NSDate对象?

    有谁知道如何获取下周五 20 00 的 NSDate 吗 Yes 本文教你如何获取当前周的星期日 我很快将其调整为周五 20 00 假设采用公历 NSDate today NSDate alloc init NSCalendar grego
  • 在使用 CefSharp 加载远程 JavaScript 时修改它们?

    我正在构建一个自定义浏览器作为远程网站界面的一部分 他们的 GUI 很糟糕 所以我做了一些 JavaScript 修改来让它看起来更好 目前 为了修改其 UI 我使用以下 GreaseMonkey 脚本 在 Firefox 上 UserSc
  • Python 中的吉他弦代码? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我对 Python 很陌生 但对编写可以模拟吉他弦的代码非常感兴趣 我该怎么做呢 或者至少我该如何开始这样做 任何帮助表示赞赏 谢谢你 EDIT 我想看看演奏不同的琴弦 音符等时
  • 使用 D3 的 Geojson 地图仅渲染要素集合中的单个路径

    我正在尝试绘制哥伦比亚某些地区的 geojson 地图 目前它只显示一条路径 我的特征集有 52 个特征 但我只能绘制这一个特征 我不知道我做错了什么 我的代码基于其他教程 我怎样才能显示所有路径 var features mapData
  • 查找字符串中的多个 url。

    resource THIS IS ABOUT WWW JONAKCOMPUTERS COM HTTP HIGHLOW COM AND TESTINGSERVER1 COM 我想将三个网址提取到另一个类似于以下内容的字符串中 all urls
  • 使用 HTML5 Canvas - 围绕任意点旋转图像

    将表盘旋转到半圆形 北半球 图像作为背景 范围可以是 0 180 度 在输入到进行画布转换的方法时 转盘将旋转并停在匹配的值上 这是我根据传递的帮助和示例尝试的phrogz 一般来说 您想要做的是 将上下文转换为画布上对象应围绕其旋转的点
  • 客户端未处理 .NET Remoting 异常

    我检查了其余的远程处理问题 这个具体案例似乎没有得到解决 我设置了 NET Remoting 服务器 客户端 在服务器端 我有一个带有可以引发异常的方法的对象 以及一个将尝试调用该方法的客户端 Server public bool MyEq
  • PHPMailer SMTP 连接失败

    我正在尝试通过 Mandrill 发送电子邮件PHP邮件程序但没有成功 在本地主机上测试 有人能告诉我问题出在哪里吗 这是来自 PHPMailer 的详细信息 2014 04 27 17 51 06 SERVER gt CLIENT 220
  • 访问pom中定义的maven属性

    如何访问普通 Maven 项目和 Maven 插件项目中 pom 中定义的 Maven 属性 Use the 属性 maven 插件编写具体的pomproperties在编译时写入文件 然后在运行时读取该文件 In your pom xml
  • ASP.NET CORE 中的流代理直播流

    我的网络摄像头有一个流 url 它返回 multipart x mixed replace boundary myboundary 的内容类型 假设可以通过以下方式访问它 http mywebcam livrestream cgi 我想在
  • 装饰一个方法

    在我的 Python 应用程序中 我使用事件在不同插件之间进行通信 现在 我想我可以使用装饰器来为我做这件事 而不是手动注册事件的方法 我想让它看起来像这样 events listento event name def myClassMet
  • 使用 chrome.socket API 构建 Web 服务器

    我使用 Chrome 打包应用程序构建了一个网络服务器 我反复看到的问题是 chrome socket accept 和 chrome socket write 不调用它们的回调函数 如果请求率低于每秒 1 个请求 它通常或多或少会可靠地工
  • C# 可能错误的空语句

    在 C 中 我可以这样写 using new MyDisposableClass MethodA 分号会导致显示编译器警告 其中指出可能存在错误的空语句 我没有运行上面的代码 但是该方法不会仍然被调用吗 这种类型的编码约定有什么用途 我在这
  • 重新分配结构体数组

    我正在尝试为从文件读取或向文件读取或由用户输入的结构数组 实际上是 2 个结构体中的每一个 但为了简单起见 此处包含 1 个结构体 动态重新分配内存 typedef Struct char surname 21 char firstname
  • 对用户定义函数内的语句进行分析

    我正在尝试使用 SQL Server Profiler 2005 来跟踪一些应用程序性能问题 所进行的调用之一是对表值用户定义函数的调用 该函数包装了一个将多个表连接在一起的选择 在 SQL Server Profiler 中 会记录对 U
  • 空栈异常

    这个EmptyStackException继续弹出 显然 我的堆栈中没有任何内容 只有用户输入的第一个元素 但是 我不确定代码哪里有缺陷 很多地方 但我只需要修复这个错误 import java util public class stac
  • android ViewPager xml 膨胀错误

    我正在学习如何实现水平滑动 并且在尝试启动我的应用程序时遇到以下错误ViewPager在它的布局中 03 25 17 12 13 166 E AndroidRuntime 19449 FATAL EXCEPTION main 03 25 1
  • 什么是“根引用”?

    引用自 在 C 中安全 在 C 中不安全 简单返回指针 引用 答案 3 埃里克 利珀特 Eric lippert 另请注意 并不是对 Person 对象的任何引用使其保持活动状态 引用必须是 root 的 您可以有两个相互引用但无法访问的
  • Makefile 致命错误:无法创建 obj/calc.o

    我正在尝试为大学项目的简单计算器制作一个生成文件 我需要完成它 我在网上搜索了教程 最终找到了这段代码 IDIR include CC gcc CFLAGS I IDIR ODIR obj LDIR lib SDIR src LIBS lm