这个Makefile 有什么问题吗?

2024-01-28

当我在以下 Makefile 上运行 make all 时,出现此错误:

Makefile:5: *** 缺少分隔符。停止。

这是什么问题以及如何修复它?

LEX = lex
YACC = yacc 
CC = gcc
calcu: y.tab.o lex.yy.o
$(CC) -o calcu y.tab.o lex.yy.o -ly -lfl
y.tab.c y.tab.h: parser.y
$(YACC) -d parser.y
y.tab.o: y.tab.c parser.h
$(CC) -c y.tab.c
lex.yy.o: y.tab.h lex.yy.c 
$(CC) -c lex.yy.c
lex.yy.c: calclexer.l parser.h
$(LEX) calclexer.l
clean:
rm *.o
rm *.c
rm calcu

G'day,

您需要制表符来缩进每个目标下方的行。

LEX = lex
YACC = yacc 
CC = gcc
calcu: y.tab.o lex.yy.o
    $(CC) -o calcu y.tab.o lex.yy.o -ly -lfl
y.tab.c y.tab.h: parser.y
    $(YACC) -d parser.y
y.tab.o: y.tab.c parser.h
    $(CC) -c y.tab.c
lex.yy.o: y.tab.h lex.yy.c 
    $(CC) -c lex.yy.c
lex.yy.c: calclexer.l parser.h
    $(LEX) calclexer.l
clean:
    rm *.o
    rm *.c
    rm calcu

顺便说一句,一般约定是您应该在宏中使用大括号而不是方括号。使用括号是将对象替换回存档中遗留下来的遗留问题。所以上式更好地表达为:

LEX = lex
YACC = yacc 
CC = gcc
calcu: y.tab.o lex.yy.o
    ${CC} -o calcu y.tab.o lex.yy.o -ly -lfl
y.tab.c y.tab.h: parser.y
    ${YACC} -d parser.y
y.tab.o: y.tab.c parser.h
    ${CC} -c y.tab.c
lex.yy.o: y.tab.h lex.yy.c 
    ${CC} -c lex.yy.c
lex.yy.c: calclexer.l parser.h
    ${LEX} calclexer.l
clean:
    rm *.o
    rm *.c
    rm calcu

HTH

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

这个Makefile 有什么问题吗? 的相关文章

  • 使用 GNU make “从源代码树中”构建 C 程序

    我想使用 GNU make 工具为我的微控制器构建一个 C 项目 我想以一种干净的方式来做这件事 这样我的源代码在构建后就不会被目标文件和其他东西弄乱 想象一下我有一个名为 myProject 的项目文件夹 其中有两个文件夹 myProje
  • Makefile 和通配符

    好吧 这是我当前的 makefile 设置 有一些文件名为public01 c public02 c等等 我正在尝试使用以下方法为每个人制作目标文件public o带有通配符的标签 public o public c hashtable h
  • 如何调用位于其他目录的Makefile?

    我正在尝试这样做 我想打电话给 make Makefile存在于其他目录中 abc可以使用位于不同目录中的 shell 脚本的路径 我该怎么做呢 由于 shell 脚本不允许我cd进入Makefile目录并执行make 我怎样才能编写she
  • 为什么这个 makefile 在“make clean”上执行目标

    这是我当前的 makefile CXX g CXXFLAGS Wall O3 LDFLAGS TARGET testcpp SRCS main cpp object cpp foo cpp OBJS SRCS cpp o DEPS SRCS
  • 在 Mac 上更新 Make 版本

    我正在尝试更新 mac 上的 make 版本 但遇到了问题 最小项目依赖项是 4 1 但我的版本似乎是 3 81 我已将 Xcode 更新到最新版本并安装了命令行工具 但它似乎仍然是旧版本 有谁遇到过这个问题或知道解决方法吗 这是我所做的
  • 与 GNU Make 等 Python 相关的并行任务并发

    我正在寻找一种方法或者可能是一种哲学方法来如何在 python 中执行类似 GNU Make 的操作 目前 我们使用 makefile 来执行处理 因为 makefile 非常擅长通过更改单个选项 j x 进行并行运行 此外 gnu mak
  • Qt 和 MOC 的困境与简单的制作

    我想这更像是一个 GNU Make 问题 而不是 Qt 和 moc 但这里是 我有一个包含多个目录Q OBJECTS 我有一些简单的代码 它收集所有这些 例如 MOCS shell grep l Q OBJECT HEADERS Assum
  • 如何确保目标在 makefile 中的所有其他构建规则之前运行?

    我有一个 C 项目 其中包含所有其他 C 文件所依赖的生成文件 我试图在任何其他编译开始之前强制生成并编译该文件 通常它就像将该文件首先放入all 目标 但复杂的是我的 Makefile 也是由构建系统生成的 我只能将片段附加到 Makef
  • 如何最好地以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

    In my makefile我有以下目标 它将文本 HTML 资源 编译 为unsigned char数组使用xxd i http linuxcommand org man pages xxd1 html 我将结果包装在匿名命名空间和标头保
  • 避免使用 git 和 make 重新编译

    我在 git 中有两个开发分支 并且经常需要在两者之间进行更改 然而 真正令人沮丧的是 每次我在 git 中更改分支时 整个项目都会重新构建 因为某些文件的文件系统时间戳会发生变化 Ofc makefiles 配置为将项目构建到两个不同的构
  • 为什么 Visual Studio Code 在编辑 Makefile 和 "editor.insertSpaces": "auto" 时插入空格?

    make 不喜欢 Makefile 中的目标主体有空格 必须是一个标签 我将 editor insertSpaces 更改为 auto 认为这会有所帮助 事实并非如此 我必须将其设置为 false 才能使代码正常工作 现在可以通过语言特定设
  • 如何将当前目录捕获为 make 变量中的绝对路径名?

    我想在 GNUmake 文件运行期间获取当前目录并将其放入 make 变量中 执行此操作的语法是什么 像这样的东西吗 DIR PWD Um no PWD有时是在您的环境中定义的 因此由 make 继承 但通常不是 你需要 CURDIR DI
  • 如何复制Makefile中的目录?

    我有一个目录images 我想复制到build images 从 Makefile 中 该目录可能包含多个级别的子目录 最优雅的方法是什么 我想 避免每个目录都复制完整的目录make运行 即不cp r 保证一致性 即如果文件在images
  • make:仅针对单个目标禁用子目录中的并行构建

    我有一个相当庞大的由自动工具驱动的项目 它位于一个目录树中 该目录树由许多带有子目录的目录组成 它有一个目标check 在每个子目录以及主目录中 执行大量自动化测试 这check目标是递归构建的 并行构建和测试 通过 j选项 make 适用
  • 您如何使编译器行更短?

    通常 当我与其他人一起处理一个项目时 随着时间的推移 编译器在 Makefile 中获取的库路径和包含路径的数量会变得越来越多 此外 路径也可能会变得很长 这是一个例子 g c pipe O2 Wall W DQT BOOTSTRAPPED
  • 为什么 make 会删除我的临时文件?

    我有一个简单的 Makefile PHONY clean PROGRAMS patsubst main cpp example wildcard main cpp all PROGRAMS GCCVERSION shell gcc dump
  • 链接 C 代码时如何判断符号的定义位置

    我面临着链接中特定符号的未定义参考问题 error undefined reference to g queue pop nth 我正在 LOP 和 ARM 平台上工作 我们在两个平台上使用相同的环境 我们的 ARM 构建可以毫无问题地链接
  • 如何处理GNU make中的子make错误?

    我在 Makefile GNU 中使用子 make 但每当子 make 失败时 主 make 都会继续成功运行 我希望每当我的子 make 失败时我的主 Makefile 都会失败 我怎么做 all pushd STA DIR make c
  • 用于编译和运行 C++ 的 bash 脚本

    我正在尝试进入 C 但必须使用冗长的命令通过命令行运行东西很烦人 所以我想制作一个 bash 脚本来简化过程并运行这些命令 bin bash if 1 start then cd CCPP cd HelloWorld g Wall W We
  • Windows 上使用 g++ 的 Makefile,链接库

    我已经厌倦了 MSVC 6 以及每个人总是告诉我它是一个蹩脚的编译器等等 所以现在我决定尝试使用 vim 加 g 和 makefile 这是我的问题 我有以下 makefile This is supposed to be a commen

随机推荐

  • 悬停时在不同 div 上显示子菜单

    您好 请查看以下 html document ready function sub on mouseenter function event second menu addClass show no sub on mouseenter fu
  • 在 rrapply::rrapply() 中保留空列表

    是否有一个选项允许我保留具有 0 长度列表值的列表条目how melt 选项 在下面 我想保留B and E条目 注意 当我在这里有一个更简单的表示时 akrun 给出了一个初始解决方案 我没有 0 长度列表 E在原来的 我最初接受了 意识
  • 调试设计时包时启动 Delphi 时出错

    我在启动 Delphi 2010 的第二个实例来调试设计时包时遇到问题 在项目选项 调试器下 我使用 C Program Files Embarcadero RAD Studio 7 0 bin bds exe 作为主机应用程序 并具有以下
  • iPhone 设备 3.0 静态库中的类别

    我的静态库中有类别 任何应用程序开发人员都应该将 ObjC 标志设置为 其他链接器标志 才能正确使用我的静态库 它适用于 iPhone 设备 iPhone Simulator 2 x 和 iPhone Simulator 3 0 但在 iP
  • 如何处理 Spring Data JPA 中 ID 数组的批量删除?

    现在我有一个 User 类 我得到一个请求数据array来自jsp or html 列出这个Integer arr 5 6 9 10 62 52 21 然后我使用两种方法来完成批量删除操作 Transactional Override pu
  • UIImageView 缓存策略 - AFNewtorking

    我的应用程序中有几个 UIImageView 我使用 AFNetworkingsetImageWithURL从我的服务器填充图像 文档说这个方法使用标准的 UIImageView 缓存策略 我的问题是 如果我更新服务器上的图像 该图像不会很
  • 使用 R 将列名称插入其值

    我需要将列名称 部门插入其值中 我有这样的代码 Department lt c Store1 Store2 Store3 Store4 Store5 Department2 lt c IT1 IT2 IT3 IT4 IT5 x lt c 1
  • 避免重复输入 mysql 数据库的最佳方法

    我有一个包含 3 列的表 id pk pageId fk 名称 我有一个 php 脚本 它将大约 5000 条记录转储到表中 其中大约一半是重复的 具有相同的 pageId 和名称 pageId 和名称的组合应该是唯一的 当我在 php 中
  • 使用预填充表单,仅提交更改的字段

    我有一个使用选择和文本输入的 html 表单 该表单预先填充了默认值 如何仅提交用户更改默认值的输入 请注意 该页面将存储在空间有限的嵌入式系统中 因此不可能使用 javascript 库 示例 HTML
  • 我正在与 requirejs 优化器和非 AMD 模块作斗争

    我正在与 requirejs 优化器作斗争 如果我只是将其加载到浏览器中而不进行优化 则该代码将起作用 如果我运行优化器 我会得到 ENOENT no such file or directory C Users dev checkout
  • ServletContainerInitializer 中 contextDestroyed() 的等价物是什么?

    我必须创建一个实现的类ServletContextListener https docs oracle com javaee 7 api javax servlet ServletContextListener html在Tomcat初始化
  • 模板中的 Latex 指令导致“unicode 转义错误”

    我想在 play Framework 2 0 模板中包含一些 LaTEX 代码 即 usepackage T1 fontenc usepackage latin9 inputenc usepackage babel 当然玩抱怨error i
  • 当属性名称包含空格和保留字时,将 JSON 映射到 C# 类

    我正在使用 REST API 服务 在服务响应 JSON 中 存在包含空格和保留字的属性名称 我试图将其映射到 C 类 但无法分配与字段名称相同的属性名称 目前 只有当字段的 JSON 属性和 C 类名完全匹配时 映射才会成功 否则该值将如
  • 如何仅使用 math.h 将双精度数转换为字符串?

    我正在尝试将双精度数转换为本机 NT 应用程序中的字符串 即仅依赖于ntdll dll 不幸的是 ntdll 的版本vsnprintf不支持 f等 迫使我自己实现转换 之前所提ntdll dll只出口其中的一小部分math h功能 floo
  • 如何在单个浏览器页面上向 Dash 应用程序添加多个图表?

    如何在同一页面上添加多个图中显示的图表 我试图将 html Div 组件添加到以下代码中以更新页面布局 以在单页上添加更多图形 但这些新添加的图形不会显示在页面上 只有旧图形显示在图片中可见 我应该修改什么元素 比如说在浏览器上的破折号应用
  • maven-shade-plugin 报告:创建着色 jar 时出错:...target/classes(是一个目录)

    当使用 m2eclipse 工具在 eclipse 中为配置为以下项目的项目运行 Maven 构建时Maven 阴影插件 https maven apache org plugins maven shade plugin 构建失败并显示以下
  • ResponseEntity 不接受文本/csv:Spring Boot

    我正在尝试创建一个接受 CSV 和 json 正文请求等文件的 API 我尝试使用ResponseEntitySpring Boot 中的对象 端点如下所示 PostMapping value csv consumes MediaType
  • 左侧 div 在 bootstrap 中未正确对齐[重复]

    这个问题在这里已经有答案了 我的代码中已经有粘性标头 我正在尝试在左侧添加一个粘性 div 最初看起来不错 当我尝试滚动内容时 布局正在改变 此外 在最小尺寸 移动尺寸 时 左侧 div 未正确对齐 请建议 var onResize fun
  • 如何通过 RxJs 合并或 groupBy toPromise?

    我有以下方法返回结果 如下所示 result status 200 status 200 status 400 我需要使用状态值对结果进行分组 并且对于上面的示例结果仅返回 2 个结果 而不是 3 个 update this demoSer
  • 这个Makefile 有什么问题吗?

    当我在以下 Makefile 上运行 make all 时 出现此错误 Makefile 5 缺少分隔符 停止 这是什么问题以及如何修复它 LEX lex YACC yacc CC gcc calcu y tab o lex yy o CC