Makefile “multiple target patterns. Stop.”解决方案

2023-11-13

几天在帮一个同事编译Xen中的tools时,我改了一些config文件,然后就遇到了一个错误“Makefile:72: *** multiple target patterns. Stop.
花了大约半个小时才找到了这个错误是自己写错了一个配置的原因,将其过程及其根本原因说一下。

总的来讲,“mutiple target patterns”这个错误,一般是由于Makefile中target那一行有多余的冒号(:)(我们知道冒号在Makefile中的用来标识前面是一个编译的目标),如果有多余的冒号就会报错。
有一个简单有效的方法去排查这个问题,就是自己另外定义一个目标,将抱错行的信息全部打印出来看看是否有多余的冒号。

我所遇到的错误那一行如下:
roms.inc: $(ROMBIOS_ROM) $(SEABIOS_ROM) $(STDVGA_ROM) $(CIRRUSVGA_ROM) ../etherboot/eb-roms.h
由于里面依赖到了4个变量,而且其中几个变量并不是在这个Makefile中直接定义的,所以找起来有点麻烦。我就在Makefile中添加了一个target将这个变量打印出来看看那,添加的Makefile代码如下:

View Code BASH
1
2
3
4
 mydebug:
          echo "/* just for debugging in Makefile */"
          echo "$(ROMBIOS_ROM) $(SEABIOS_ROM) $(STDVGA_ROM) $(CIRRUSVGA_ROM)" > /tmp/debug-makefile.log
          echo "/* END for debugging in Makefile */"

然后将原来出错的那一行注释掉,然后运行”make mydebug”,之后去看一下/tmp/debug-makefile.log文件,我就发现这里的$(SEABIOS_ROM)变量中含有非法的冒号字符,它的值为:git://vt-sync/seabios.git/out/bios.bin
再继续寻找,我就发现,我在一个Config.mk中写有“SEABIOS_DIR ?= git://vt-sync/seabios.git”这样的失误。

为了简单的说明,请看下面一个简单例子,Makefile如下:

View Code BASH
1
2
3
4
5
OBJ1="temp1:"
 
#build: temp $(OBJ1)
test: temp
        echo "OBJ1='$(OBJ1)'" > /tmp/debug-makefile.log

如果不注释掉“build: temp $(OBJ1)”这一样,运行“make build”就会报错“Makefile:3: *** multiple target patterns. Stop.”
然后为了查原因,我们可以注释掉build这个target,然后执行下“make test”,立马就会发现OBJ1=’temp1:’,所以是有错误的。而实际遇到的问题,并没有这个小例子这么浅显,出错的变量不一定直接定义在当前的Makefile中,为了排除错误,我们可以直接echo出一些变量的值来查看。

`missing target pattern. Stop.’
`multiple target patterns. Stop.’
`target pattern contains no `%’. Stop.’
These are generated for malformed static pattern rules. The first means there’s no pattern in the target section of the rule, the second means there are multiple patterns in the target section, and the third means the target doesn’t contain a pattern character (%).
Makefile error: http://theory.uwinnipeg.ca/localfiles/infofiles/make/make_121.html


转自:http://smilejay.com/2012/03/makefile_multiple_target_patterns/

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

Makefile “multiple target patterns. Stop.”解决方案 的相关文章

  • 2.7 深入理解ContentProvider

    第7章 深入理解ContentProvider 7 1 概述 本章重点分析ContentProvider SQLite Cursor query close函数的实现及ContentResolver openAssetFileDescrip
  • 线程安全(上)

    前言 在多线程中 并不是说知道怎么使用就完事了 学习完如何使用多线程之后 我们了解到多线程的并发性和随机调度的特性是我们程序员不容易控制的 所以一旦操作不当就会带来许多安全问题 那我们就开始学习线程安全吧 目录 1 使用多线程带来的风险 硬
  • Rust交叉编译简述 —— Arm

    使用系统 WSL2 Kali Microsoft Store 命令列表 rustup target list 当前官方支持的构建目标架构列表 rustup target add aarch64 unknown linux gnu 添加目标架
  • Tensorflow错误InvalidArgumentError see above for traceback): No OpKernel was registered to support Op

    调用tensorflow gpu运行错误 错误信息如下 2023 06 21 15 36 14 007389 I tensorflow core platform cpu feature guard cc 141 Your CPU supp
  • 十三、java版 SpringCloud分布式微服务云架构之Java Character 类

    Java Character 类 Character 类用于对单个字符进行操作 Character 类在对象中包装一个基本类型 实例 char ch a Unicode 字符表示形式 char uniChar u039A 字符数组 char
  • vs的运行库 MT MTd MD MDd区别

    MT mutithread Static 多线程库 编译器会从运行时库里面选择多线程静态连接库来解释程序中的代码 即连接LIBCMT lib库 MTd mutithread debug Static 多线程调试版 连接LIBMITD lib
  • 刷脸支付新技术必将带来全新体验

    刷脸支付充满前景 占领支付市场只是时间问题 新技术必将带来新体验 从前的人脸确认登录是证明你是你 而如今的人脸识别是在验证你是谁 刷脸支付的到来 用户连密码都不需要设置了 你自身便是一张行走的活体 秒识别 秒验证让支付生活更加方便快捷 与现
  • android系统的初始化失败怎么办,android初始化失败

    android初始化失败 03 08 16 56 53 235 19683 19711 F libc Fatal signal 6 SIGABRT code 6 in tid 19711 Thread 737 03 08 16 56 53
  • 推荐!国外程序员整理的 C++ 资源大全

    关于 C 框架 库和资源的一些汇总列表 由 fffaraz 发起和维护 内容包括 标准库 Web应用框架 人工智能 数据库 图片处理 机器学习 日志 代码分析等 标准库 C 标准库 包括了STL容器 算法和函数等 C Standard Li
  • 快速部署SpringBoot项目

    快速部署SpringBoot 1 使用宝塔安装 CentOS yum install y wget wget O install sh http download bt cn install install 6 0 sh sh instal
  • 【第十三届蓝桥杯】省赛C/C++ B组 题目+题解

    目录 A 九进制转十进制 B 顺子日期 C 刷题统计 D 修剪灌木 E X 进制减法 F 统计子矩阵 G 积木画 H 扫雷 I 李白打酒加强版 J 砍竹子 A 九进制转十进制 本题总分 5 分 问题描述 九进制正整数 2022 转换成十进制
  • 使用Python接口自动化测试post请求和get请求,获取请求返回值

    目录 引言 请求接口为Post时 传参方法 方法一 通过json dunps body 转化成json格式的字符串 然后传递给data 方法二 在传参时直接格式化成json格式传参 获取接口请求响应数据 request 接口请求时 不对数据
  • github提交失败:error: failed to push some refs to https://github.com/***/git.git

    1 问题 在github远程创建仓库后 利用gitbash进行提交本地文件的时候出现如下错误 报错 error failed to push some refs to https github com git git 2 原因 远程仓库与本
  • AD里面PCB怎样设置原点

    在PCB图中 点击EDIT 选择ORIGIN 点击set 设置原点 如果是元器件封装时 点击EDIT 选择set reference 有三个选项 下面细讲 1 选择pin1 会将原点自动设置在pin1的中心 2 选择 center 会将原点
  • jquery如何获取表单全部数据

    Jquery 如何获取表单的全部数据 用于ajax提交 var formData var t Form serializeArray each t function formData this name this value console
  • [Node] Node.js 包管理工具详解npm yarn cnpm npx pnpm

    Node js专栏 Node js 初级知识 个人简介 一个不甘平庸的平凡人 个人主页 CoderHing的个人主页 格言 路漫漫其修远兮 吾将上下而求索 你的一键三连是我更新的最大动力 目录 1 npm包管理工具 包管理工具npm 常见的
  • 淘宝装修HTML代码大全

    http blog sina com cn s blog 506f1f940100hv9d html 淘宝网店装修HTML代码大全 包括淘宝装修代码 插入图片代码 公告滚动代码 不不一定要懂网站知识 不一定要懂HTML语言 看完这个就可以装
  • 五线谱音名和组别对照表_利用吉他指板快速识记五线谱

    如果你开始读五线谱 最重要的建议就是读五线谱时 忘记六线谱 忘记 忘记 忘记 因为五线谱和六线谱完全是两个不同的概念 虽然六线谱只比五线谱多出一条横线 关键是二者记谱的机理风马牛不相及 五线谱是采用音高记谱 而六线谱是音位记谱 虽然音高和音
  • Linux kernel 关机的底层操作

    Linux关机相关命令如 halt shutdown poweroff和reboot 其实它们底层都是调用名为reboot的system call 其具体实现是在内核目录的kernel sys c中的 SYSCALL DEFINE4 reb
  • 用python怎么输出个人信息,python怎么输出个人信息

    大家好 给大家分享一下python输入自己的姓名 输出hello 某某某同学 很多人还不知道这一点 下面详细解释一下 现在让我们来看看 1 python要求用户输入姓名并输出 name input 请输入姓名 print 你好 name 代

随机推荐

  • 内核hwmon驱动框架详解以及海思芯片温度驱动分析

    1 hwmon驱动框架介绍 hwmon即hardware monitoring framework 硬件监视框架 可以把温度传感器 风扇 电源管理等设备的驱动都利用hwmon框架去实现 在设备的归类上比较容易理解 2 hwmon驱动框架分析
  • 解决ubuntu22.04不能使用todesk问题(显示没有x11桌面)

    这个版本默认使用的是Wayland 所以可能有点问题 x11的适配比较好 也懒得对比了 毕竟todesk好用多了 sudo nano etc gdm custom conf 将WaylandEnable false前面的注释去掉 ctrl
  • Tuning Muxers

    Tuning Muxers WebLogic Server uses software modules called muxers to read incoming requests on the server and incoming r
  • C++ 通讯录管理系统

    include showMenu h using namespace std void showMenu cout lt lt lt lt endl cout lt lt 1 添加联系人 lt lt endl cout lt lt 2 显示
  • Deep Learning Tutorials(一):开头语

    万事开头难 当你开始看这些时候 有可能你已经开始了研究生生活 不在像本科时候过着那种得过且过 考试不挂科的日子 你整天盲目 漫无目的的过日子实际上是在浪费自己的生命 所以坚持每天进步吧 回到正事 你可能开始从事深度学习研究或者有关机器学习方
  • 在PyCharm中查看调用函数的说明文档

    说明文档对函数进行说明解释 帮助更好理解函数的功能 在PyCharm编写代码时 可以通过鼠标悬停 查看调用函数的说明文档 可以查看python内置函数的说明文档 我们也可以给自己创建的函数添加说明文档 辅助理解函数的作用 如下
  • 为什么计算机是32位64位,64位是x86还是x64_为什么64位是X64,32位是X86?

    其它网友回答 windows系统64位的是x64 说明这个系统是可以向下兼容32位程序的64位系统 32位的不是x32而是x86说明该系统是可以向上兼容非32位程序的32位系统 其它网友回答 同意楼上说法 其它网友回答 1 x86的由来 8
  • 时序预测

    时序预测 MATLAB实现时间序列回归之Bootstrapped测试 目录 时序预测 MATLAB实现时间序列回归之Bootstrapped测试 基本介绍 程序设计 学习小结 参考资料 基本介绍 对传统规格测试中尺寸失真的另一种反应是自举
  • idea连接MYSQL报错汇总

    idea连接MYSQL报错汇总 The last packet sent successfully to the server was 0 milliseconds ago The driver has not received any p
  • Face_Recognition 人脸识别函数详解

    加载人脸图片文件 load image file file mode RGB 通过 PIL image open 加载图片文件 mode 有两种模式 RGB 3通道 和 L 单通道 返回 numpy array 查找人脸位置 人脸分割 fa
  • FPGA基础知识19(FPGA异步时钟设计中的同步策略 异步时钟 打两拍 握手机制)

    需求说明 IC设计基础 内容 异步时钟处理方法 来自 时间的诗 原文 https wenku baidu com view 586e8afb7e21af45b307a8b8 html 原文 http ee ofweek com 2011 1
  • Spring源码分析衍生篇五:AutowiredAnnotationBeanPostProcessor

    文章目录 一 前言 二 AutowiredAnnotationBeanPostProcessor 三 determineCandidateConstructors 四 postProcessProperties postProcessPro
  • python程序员爬取分析20万场吃鸡数据,带妹吃鸡,终成人生赢家

    首先 神枪镇楼 吃鸡 撩妹神器 吃鸡游戏受到很多年轻人的喜爱 用户量也非常大 有很多地图 场景逼真 技术玩法 增加了游戏可玩性 而且 很多小姐姐也喜欢玩 几乎在组队当中 都可以碰到 带个妹子组队游戏 一边语音一边吃鸡 带小姐姐吃鸡就很容易获
  • Flutter之tabber改造

    先说改造效果 效果1 tabber在页面中间 不在顶部或者底部 效果2 tab用按钮的形状来显示 不单单是文字 两种效果如下图所示 注 代码中有一些是注释的 故意没删除 是我解决问题时的思路 可以参考 因为要解决左右滑动样式变化问题 没有使
  • SVN update时出现:E155004错误

    Update SVN的代码 但是在update时出现svn E155004 Working copy E XX locked 错误 乍眼一看以为是什么配置出错 但是他们update源码时正常 后来仔细一看错误原因 是因为有locked 然后
  • 计算机系统结构教程

    这是一本计算机系统结构的教程 出版社是清华大学 是许多高校的教学教材 由计算机系统结构的基础知识 指令系统的设计 流水线技术 向量处理机 指令级并行及其开发 硬件方法 指令级并行的开发 软件方法 存储系统 输入输出系统 互连网络 多处理机
  • 如何使用微服务架构进行项目开发?

    随着软件开发的发展 微服务架构在企业和互联网项目中越来越普遍 内部功能模块独立 高度可扩展和可移植 可在团队成员中实现不同项目的部署和管理 使用微服务架构需要了解相关技术和工具来简化我们的开发工作流程 在本文中 我们将讨论一下微服务架构的实
  • 快速解决AndroidStudio代码提示失效问题

    在编写代码时 代码不自动提示 发现代码自动提示设置正常 所以查询到问题原因在于节能模式的开启 具体解决方式如下 关闭节能模式 如上图所示 将Power Save Mode前面的对勾去掉 则完成节能模式的关闭 代码提示功能正常
  • 【满分】【华为OD机试真题2023B卷 JAVA&JS】篮球比赛

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 篮球比赛 知识点广搜 时间限制 1s 空间限制 64MB 限定语言 不限 题目描述 篮球 5V5 比赛中 每个球员拥有一个战斗力 每个队伍的所有球员战斗力之和为该队伍的总体战斗力 现有
  • Makefile “multiple target patterns. Stop.”解决方案

    几天在帮一个同事编译Xen中的tools时 我改了一些config文件 然后就遇到了一个错误 Makefile 72 multiple target patterns Stop 花了大约半个小时才找到了这个错误是自己写错了一个配置的原因 将