Makefile中常见的错误信息

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。  

make 执行过程中所产生错误并不都是致命的,特别是在命令行之前存在 "-"、或者 make 使用 "-k" 选项执行时。

make 执行过程的致命错误都带有前缀字符串 "***"

错误信息都有前缀,一种是以执行程序名作为错误前缀(通常是 "make");另外一种是以 Makefile 文件名和出现错误的行号作为错误前缀,这往往是因为 Makefile 本身存在语法错误而无法被 make 解析与执行造成的。

错误1

在下述的错误列表中,省略了普通前缀:

[FOO] Error NN
[FOO] signal description

这类错误并不是 make 的真正错误。它表示 make 检测到 make 所调用的作为执行命令的程序返回一个非零状态(Error NN),或者此命令程序以非正常方式退出(携带某种信号)。
如果错误信息中没有附加 "***" 字符串,则是子过程的调用失败,如果 Makefile 中此命令有前缀 "-",make 会忽略这个错误。

错误2 

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] 字符开始的。

错误3 

commands commence before first target. Stop.
missing rule before commands. Stop.

Makefile 可能是以命令行开始:以 [Tab] 字符开始,但不是一个合法的命令行(例如,一个变量的赋值)。命令行必须和规则一一对应。

产生错误的原因可能是一行的第一个非空字符为分号,make 会认为此处遗漏了规则的 "target: prerequisite" 部分。

错误4 

No rule to make target 'XXX'.
No rule to make target 'XXX ', needed by 'yyy'.

无法为重建目标“XXX”找到合适的规则,包括明确规则和隐含规则。
修正这个错误的方法是:在 Makefile 中添加一个重建目标的规则。其它可能导致这些错误的原因是 Makefile 中文件名拼写错误,或者破坏了源文件树(一个文件不能被重建,可能是由于依赖文件的问题)。

错误5 

No targets specified and no makefile found. Stop.
No targets. Stop.

第一个错误表示在命令行中没有指定需要重建的目标,并且 make 不能读入任何 Makefile 文件。第二个错误表示能够找到 Makefile 文件,但没有终极目标或者没有在命令行中指出需要重建的目标。这种情况下,make 什么也不做。

错误6 

Makefile 'XXX' was not found.
Included makefile 'XXX' was not found.

没有使用 "-f" 指定 Makefile 文件,make 不能在当前目录下找到默认 Makefile(makefile 或者 GNUmakefile)。使用 "-f" 指定文件,但不能读取这个指定的 Makefile 文件。

错误7 

warning: overriding commands for target 'XXX'
warning: ignoring old commands for target 'XXX'

对同一目标 "XXX" 存在一个以上的重建命令。GNU make 规定:当同一个文件作为多个规则的目标时,只能有一个规则定义重建它的命令(双冒号规则除外)。如果为一个目标多次指定了相同或者不同的命令,就会产生第一个告警;第二个告警信息说新指定的命令覆盖了上一次指定的命令。

错误8 

Circular XXX <- YYY dependency dropped.

规则的依赖关系产生了循环:目标 "XXX" 的依赖文件为 "YYY",而依赖 "YYY" 的依赖列表中又包含 "XXX"。

错误9 

Recursive variable 'XXX' references itself (eventually). Stop.

make 的变量 "XXX"(递归展开式)在替换展开时,引用它自身。无论对于直接展开式变量(通过:=定义的)或追加定义(+=),这都是不允许的。

错误10 

Unterminated variable reference. Stop.

变量或者函数引用语法不正确,没有使用完整的的括号(缺少左括号或者右括号)。

错误11 

insufficient arguments to function 'XXX'. Stop.

函数 "XXX" 引用时参数数目不正确。函数缺少参数。

错误12 

missing target pattern. Stop.
multiple target patterns. Stop.
target pattern contains no '%'. Stop.             
mixed implicit and static pattern rules. Stop.

不正确的静态模式规则。
第一条错误的原因是:静态模式规则的目标段中没有模式目标;
第二条错误的原因是:静态模式规则的目标段中存在多个模式目标;
第三条错误的原因是:静态模式规则的目标段目标模式中没有包含模式字符“%”;
第四条错误的原因是:静态模式规则的三部分都包含了模式字符“%”。正确的应该是只有后两个才可以包含模式字符“%”。

错误13 

warning: -jN forced in submake: disabling jobserver mode.

这一条告警和下条告警信息发生在:make 检测到递归的 make 调用时,可通信的子 make 进程出现并行处理的错误。递归执行的 make 的命令行参数中存在 "-jN" 参数(N的值大于1),在有些情况下可能导致此错误,例如:Makefile 中变量 "MAKE" 被赋值为 "make –j2",并且递归调用的命令行中使用变量 "MAKE"。在这种情况下,被调用 make 进程不能和其它 make 进程进行通信,其只能简单的独立的并行处理两个任务”。

错误14 

warning: jobserver unavailable: using -j1. Add '+' to parent make rule.

为了实现 make 进程之间的通信,上层 make 进程将传递信息给子 make 进程。在传递信息过程中可能存在这种情况:子 make 进程不是一个实际的 make 进程,而上层make却不能确定子进程是否是真实的 make 进程,它只是将所有信息传递下去,上层 make 采用正常的算法来决定这些。当出现这种情况,子进程只会接受父进程传递的部分有用的信息。子进程会产生该警告信息,之后按照其内建的顺序方式进行处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Javascript中call函数和apply函数的使用

Javascript 中call函数和apply的使用&#xff1a; Javascript中的call函数和apply函数是对执行上下文进行切换&#xff0c;是将一个函数从当前执行的上下文切换到另一个对象中执行&#xff0c;例如&#xff1a; sourceObj.method.call(destObj,params1,params2) 是将sourceObj中…

Makefile隐含规则

以下内容源于C语言中文网的学习与整理&#xff0c;非原创&#xff0c;如有侵权请告知删除。 隐含规则的含义 隐含规则&#xff0c;就是我们做出一些具体的操作后&#xff0c;系统自动推导完成。 编写 Makefile 的时候&#xff0c;可以使用隐含规则来简化Makefile 文件编写。 下…

WIN7 Wireshark: There are no interfaces on which a capture can be done

有的时候我们在Windows7的环境下使用Wireshark的时候&#xff0c;比如点击【Interface List】的时候&#xff0c;出现错误。 错误内容如下&#xff1a; There are no interfaces on which a capture can be done. 这个错误是因为系统没有启动NPF服务造成的。 解决的办法很简单&…

搭建wordpress开发环境

安装php PHP下载地址&#xff1a;http://windows.php.net/download/ 和MySQL一样&#xff0c;下载包是一个zip压缩包&#xff0c;只需解压缩即可。将它解压缩到 D:\WNMP\php-5.5.6-Win32-VC11-x64目录下: 配置php 将php.ini-production文件复制并重命名为php.ini&#xff0c;并…

GCC和CC的区别

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 参考博客&#xff1a;Difference Between GCC and CC Compiler - Ask Any Difference 参考博客&#xff1a;Linux新手学堂&#xff1a;CC与GCC的区别概括介绍 - Prayer - C博客 总结 1、作用 GCC和CC都是…

Leetcode Copy List with Random Pointer

A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null. Return a deep copy of the list. 对于这道题最开始用的是用一个数组存储新建的节点&#xff0c;然后对random的索引时比较快。 后来在…

sharepoint 2007页面显示真实的错误信息

打开下面path的web.config文件:C:\Program Files\Common Files\Microsoft Shared\Web ServerExtensions\12\TEMPLATE\LAYOUTS修改&#xff1a;<system.web>... <customErrors mode"Off" />...</system.web>如果没有就添加&#xff1a;<SharePoi…

Shell循环(for,while,until,break与continue)

以下内容源于C语言中文网的学习与整理&#xff0c;如有侵权&#xff0c;请告知删除。 一、for循环 for循环一般格式为&#xff1a; for 变量 in 列表 docommand1command2...commandN done 列表是一组值&#xff08;数字、字符串等&#xff09;组成的序列&#xff0c;每个值通过…

业界重磅新书《UNIX/Linux网络日志分析与流量监控》首发

《UNIX/Linux网络日志分析与流量监控》出版社官网&#xff1a; http://www.cmpbook.com/stackroom.php?id39384 每本图书附赠51CTO学院的价值100元学习卡一张京东&#xff1a;http://item.jd.com/11582561.html机械工业出版社在线购书平台&#xff1a;http://www.golden-book.…

Git工具使用基础

Git 是一个分布式的版本控制工具&#xff0c;本篇文章从介绍Git开始&#xff0c;重点在于介绍Git的基本命令和使用技巧&#xff0c;让你尝试使用Git的同时&#xff0c;体验到原来一个版 本控制工具可以对开发产生如此之多的影响&#xff0c;文章分为两部分&#xff0c;第一部分…

Shell case esac语句

以下内容源于C语言中文网的学习与整理&#xff0c;如有侵权&#xff0c;请告知删除。 case语句格式 case 值 in 模式1)command1command2command3;; 模式2&#xff09;command1command2command3;; *)command1command2command3;; esac 取值后面是关键字 in。取值可以为变量或常数…

Shell test命令

以下内容源于C语言中文网的学习与整理&#xff0c;如有侵权&#xff0c;请告知删除。 Shell中的 test 命令用于检查某个条件是否成立&#xff0c;它可以进行数值、字符和文件三个方面的测试。这其实相当于一个中括号&#xff1f; 一、数值测试 参数说明-eq等于则为真-ne不等于…

DDOS的攻击原理和防护指南

我们现在来分析DDOS的攻击原理。 首先&#xff0c;DDOS是英文Distributed Denial of Service的缩写&#xff0c;意思是分布式拒绝服务。拒绝服务又是什么意思呢&#xff1f;就是采取一些垃圾数据包来阻塞网站的网络通道&#xff0c;导致让网站不能正常访问。分布式服 务拒绝攻击…

Python基础笔记,后续更新

1,避免‘\n’等特殊字符的两种方式&#xff1a;1&#xff0c;利用转义字符‘\’2&#xff0c;利用原始字符‘r’ print rc:\now3,字符串中嵌入双引号等特殊符号1&#xff0c;利用转义字符‘\’2&#xff0c;使用单引号括起这个字符串 print (i l"o"ve fis.com)2…

.NET:如何让线程支持超时?

背景 本文是为了回复博客园一个兄弟的问题&#xff0c;主要回答两个问题&#xff1a; 如何让线程支持超时&#xff1f;如何让线程在执行结束后销毁&#xff1f;MS 现在不推荐使用低级别的 Thread 编程&#xff0c;而推荐使用 Task&#xff0c;另外我多数情况都是做企业应用&…

第1章 Express MongoDB 搭建多人博客

学习环境 Node.js &#xff1a; 0.10.22 Express &#xff1a; 3.4.4 MongoDB &#xff1a; 2.4.8 快速开始 安装 Express express 是 Node.js 上最流行的 Web 开发框架&#xff0c;正如他的名字一样&#xff0c;使用它我们可以快速的开发一个 Web 应用。我们用 express 来搭…

用UltraISO制作的u盘ubuntu11.04,启动失败解决方案

错误提示&#xff1a;SYSLINUX 3.84 2009-12-18 EBIOS Copyright c 1994-2009 H.Peter Anvin et al 折腾的很久&#xff0c;尝试用Pauly的bootice&#xff0c;结果可以从u盘启动了。 先用UltraISO制作好u盘ubuntu11.04。 下载bootice&#xff0c;把u盘插上去&#xff0c;打开软…

ATT汇编与Intel汇编区别

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 参考博客 Linux 汇编语言开发指南 Intel 格式&#xff0d;&#xff0d;AT&T 格式_51CTO博客_at&t和intel汇编语法 前言 X86汇编语言有两种语法风格&#xff0c;即Intel汇编风格和AT&T汇编风格。…

Windows Phone 8初学者开发—第7部分:本地化应用程序

Windows Phone 8初学者开发—第7部分&#xff1a;本地化应用程序 原文 Windows Phone 8初学者开发—第7部分&#xff1a;本地化应用程序 第7部分:本地化应用程序 原文地址&#xff1a; http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners/Pa…

linux shell 上传,下载ftp文件

#####从ftp服务器上的/home/data 到 本地的/home/databackup#####!/bin/bash ftp -n<<! open 192.168.1.171 user guest 123456 binary cd /home/data lcd /home/databackup promptmget *close bye ! 2. ftp自动登录上传文件。 ####本地的/home/databackup to ftp服务器…