make的常见错误信息
本文对make执行时可能出现常见错误进行汇总、分析,并给出修正的可能方法。
make执行过程中所产生错误并不都是致命的;特别是在命令行之前存在“-”、或者make使用“-k”选项执行时。make执行过程的致命错误都带有前缀字符串“***”。
错误信息都有前缀,一种是执行程序名作为错误前缀(通常是“make”);另外一种是当Makefile本身存在语法错误无法被make解析并执行时,前缀包含了makefile文件名和出现错误的行号。
在下述的错误列表中,省略了普通前缀:
[FOO] Error NN
[FOO] signal description
这类错误并不是make的真正错误。它表示make检测到make所调用的作为执行命令的程序返回一个非零状态(Error NN),或者此命令程序以非正常方式退出(携带某种信号)。
如果错误信息中没有附加“***”字符串,则是子过程的调用失败,如果Makefile中此命令有前缀“-”,make会忽略这个错误。
missing separator. Stop.
missing separator (did you mean TAB instead of 8 spaces?). Stop.
不可识别的命令行,make在读取Makefile过程中不能解析其中包含的内容。GNU make在读取Makefile时根据各种分隔符(:, =, [TAB]字符等)来识别Makefile的每一行内容。这些错误意味着make不能发现一个合法的分隔符。
出现这些错误信息的可能的原因是(或许是编辑器,绝大部分是ms-windows的编辑器)在Makefile中的命令之前使用了4个(或者8个)空格代替了[Tab]字符。这种情况,将产生上述的第二种形式产生错误信息。且记,所有的命令行都应该是以[Tab]字符开始的。
commands commence before first target. Stop.
missing rule before commands. Stop.
Makefile可能是以命令行开始:以[Tab]字符开始,但不是一个合法的命令行(例如,一个变量的赋值)。命令行必须和规则一一对应。
产生第二种的错误的原因可能是一行的第一个非空字符为分号,make会认为此处遗漏了规则的“target: prerequisite”部分。
No rule to make target `XXX'.
No rule to make target ` XXX ', needed by `yyy'.
无法为重建目标“XXX”找到合适的规则,包括明确规则和隐含规则。
修正这个错误的方法是:在Makefile中添加一个重建目标的规则。其它可能导致这些错误的原因是Makefile中文件名拼写错误,或者破坏了源文件树(一个文件不能被重建,可能是由于依赖文件的问题)。
No targets specified and no makefile found. Stop.
No targets. Stop.
第一个错误表示在命令行中没有指定需要重建的目标,并且make不能读入任何makefile文件。第二个错误表示能够找到makefile文件,但没有终极目标或者没有在命令行中指出需要重建的目标。这种情况下,make什么也不做。
Makefile `XXX' was not found.
Included makefile `XXX' was not found.
没有使用“-f”指定makefile文件,make不能在当前目录下找到默认Makefile(makefile或者GNUmakefile)。使用“-f”指定文件,但不能读取这个指定的makefile文件。
warning: overriding commands for target `XXX'
warning: ignoring old commands for target `XXX'
对同一目标“XXX”存在一个以上的重建命令。GNU make规定:当同一个文件作为多个规则的目标时,只能有一个规则定义重建它的命令(双冒号规则除外)。如果为一个目标多次指定了相同或者不同的命令,就会产生第一个告警;第二个告警信息说新指定的命令覆盖了上一次指定的命令。
Circular XXX <- YYY dependency dropped.
规则的依赖关系产生了循环:目标“XXX”的依赖文件为“YYY”,而依赖“YYY”的依赖列表中又包含“XXX”。
Recursive variable `XXX' references itself (eventually). Stop.
make的变量“XXX”(递归展开式)在替换展开时,引用它自身。无论对于直接展开式变量(通过:=定义的)或追加定义(+=),这都是不允许的。
Unterminated variable reference. Stop.
变量或者函数引用语法不正确,没有使用完整的的括号(缺少左括号或者右括号)。
insufficient arguments to function `XXX'. Stop.
函数“XXX”引用时参数数目不正确。函数缺少参数。
missing target pattern. Stop.
multiple target patterns. Stop.
target pattern contains no `%'. Stop.
mixed implicit and static pattern rules. Stop.
不正确的静态模式规则。
第一条错误的原因是:静态模式规则的目标段中没有模式目标;
第二条错误的原因是:静态模式规则的目标段中存在多个模式目标;
第三条错误的原因是:静态模式规则的目标段目标模式中没有包含模式字符“%”;
第四条错误的原因是:静态模式规则的三部分都包含了模式字符“%”。正确的应该是只有后两个才可以包含模式字符“%”。
warning: -jN forced in submake: disabling jobserver mode.
这一条告警和下条告警信息发生在:make检测到递归的make调用时,可通信的子make进程出现并行处理的错误。递归执行的make的命令行参数中存在“-jN”参数(N的值大于1),在有些情况下可能导致此错误,例如:Makefile中变量“MAKE”被赋值为“make –j2”,并且递归调用的命令行中使用变量“MAKE”。在这种情况下,被调用make进程不能和其它make进程进行通信,其只能简单的独立的并行处理两个任务”。
warning: jobserver unavailable: using -j1. Add `+' to parent make rule.
为了现实make进程之间的通信,上层make进程将传递信息给子make进程。在传递信息过程中可能存在这种情况,子make进程不是一个实际的make进程,而上层make却不能确定子进程是否是真实的make进程。它只是将所有信息传递下去。上层make采用正常的算法来决定这些。当出现这种情况,子进程只会接受父进程传递的部分有用的信息。子进程会产生该警告信息,之后按照其内建的顺序方式进行处理。
转载于:https://www.cnblogs.com/elect-fans/archive/2011/12/06/2408735.html
make的常见错误信息相关推荐
- Excel常见错误信息
# Excel常见错误信息 经常使用Excel的朋友可能都会遇到一些看起来似懂非懂的错误值信息:例如# N/A!.#VALUE!.#DIV/O!等等,出现这些错误的原因有很多种,你真的了解它们吗,熟练 ...
- Makefile的常见错误信息
转载:http://blog.csdn.net/wanruirui/article/details/5894780 本章是对 make 执行过程中可能出现常见错误进行汇总.分析,并给出修正的可能 ...
- PHP编译过程中常见错误信息的解决方法
在CentOS编译PHP5的时候有时会遇到以下的一些错误信息,基本上都可以通过yum安装相应的库来解决.以下是具体的一些解决办法: checking for BZip2 support- yes ch ...
- ubuntu 安装nginx,php,mysql。常见错误解决
2019独角兽企业重金招聘Python工程师标准>>> sudo apt-get install -y libpcre3 libpcre3-dev zlib1g-dev ./conf ...
- iscsi存储常见错误
1. ISCSI安装 安装ceph #下载较新版本的源代码(含Ceph模块即可) git clone https://github.com/fujita/tgt.git export CEPH_RBD ...
- php5编译安装常见错误和解决办法集锦
最近在给开发同事折腾开发测试环境,其中就有 php 的编译安装.由于每个人的需求不一致,所以也接触到了各种模块编译和集成,中间不乏各种编译依赖报错. 正好,搜了几次都是下面 2 篇文章内容,干脆就转到 ...
- ECMAScript6语法检查规范错误信息说明
项目中使用ECMAScript6的时候经查会使用语法检查,下面是常见错误信息的汇总: 1 "Missing semicolon." : "缺少分号.", 2 & ...
- 浅显易懂 Makefile 入门 (12)— Makefile 常见的错误信息
1. 常见的错误信息 make 执行过程中所产生错误并不都是致命的,特别是在命令行之前存在 -.或者 make 使用 -k 选项执行时. make 执行过程的致命错误都带有前缀字符串 ***.错误信息 ...
- 最常见的20种VC++编译错误信息
最常见的20种VC++编译错误信息 作者: 出处: blog 责任编辑:方舟 1.fatal error C1010: unexpected end of file while looking for ...
最新文章
- 首张人类黑洞照片的背后
- 数学分析高等代数考研试题荟萃[更新至2017年10月1日]
- 基于BCH的SLP代币超过1000种,探秘SLP的内部生态
- parted命令详解
- 中国研究的超级系统计算机,[公告]超级系统恢复--学习电脑 Book 3 V1.1
- 【OFDM】基于simulink的OFDM系统仿真
- QTextEdit查找某个字符串更换颜色样式
- 一个简单的小技巧,监控网页所有动态标签创建的调用处
- python self 值自动改变,在python中对self的理解
- mcq 队列_MCQ | 基础知识 免费和开源软件| 套装4
- 论文浅尝 - ICLR2020 | Pretrained Encyclopedia: 弱监督知识预训练语言模型
- linux php c 扩展,linux下编写php5.6的C扩展模块(双向链表)
- fastdfs-client-java操作fastdfs
- 限制EditText只能输入小数点后两位
- C++ HDC作图 内存画图
- SVN代码回滚到执行版本
- oracle自增序列创建
- 批量制作学校图书馆条码标签
- tangent space与object space
- js:nodejs简单的Http服务器搭建
热门文章
- file.getinputstream(); 要关闭吗_iOS 13.5.1 和 12.4.7 已关闭,目前不能升级或降级
- html自定义radio样式,用纯CSS 自定义radio checkbox 样式
- 已知旋转矩阵求角度_如何推导旋转矩阵
- 安装MYSQL自定义安装路径
- 018_Jedis的Hash数据类型
- java开发后台技术_java开发后台的技术
- docker安装mysql并配置,Docker安装MySql-挂载外部数据和配置
- java多态强制类型转换_java多态和强制类型转换
- 四级重点高频词汇表_四级为什么自己估分和真实成绩不一样……?
- 深入浅出 RecyclerView