1. 程式人生 > >Makefile的常見錯誤資訊

Makefile的常見錯誤資訊



本章是對 make 執行過程中可能出現常見錯誤進行彙總、分析,並給出修正的可能方法。

make 執行過程中產生的錯誤並不是所有都是致命的;特別在命令列之前使用“ - ”、或者使用 make 的“ -k ”選項。 make 執行過程的致命錯誤都帶有字首字串“ *** ”。

錯誤的資訊都有字首,一種是執行程式名作為錯誤的字首(通常是“ make ”);另外一種是當 Makefile 本身存在錯誤時,字首包含了檔名和出現錯誤的行號。

在下述的錯誤列表中,省略了普通的字首:

[FOO] Error NN

[FOO] signal description

這類錯誤並不是 make 的真正的錯誤。它表示 make 所呼叫的程式返回非零的錯誤碼( Error NN ),這種情況 make 會將其作為失敗處理、或者以非正常方式退出(攜帶某種訊號)。

如果錯誤資訊中沒有附加“ *** ”字串,則是子過程的呼叫失敗,如果 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 採用正常的演算法來決定這些。當出現這種情況,子程序只會接受父程序傳遞的部分有用的資訊。子程序會產生該警告資訊,之後按照其內建的順序方式進行處理。

相關推薦

Makefile常見錯誤資訊

 本章是對 make 執行過程中可能出現常見錯誤進行彙總、分析,並給出修正的可能方法。 make 執行過程中產生的錯誤並不是所有都是致命的;特別在命令列之前使用“ - ”、或者使用 make 的“ -k ”選項。 make 執行過程的致命錯

Internet資訊服務(IIS)管理器之常見錯誤解決辦法

錯誤一: HTTP 錯誤 500.24 - Internal Server Error 檢測到在整合的託管管道模式下不適用的 ASP.NET 設定。 解決辦法: 錯誤二: HTTP 錯誤 404.2 - Not Found 由於 Web 伺服器上的“IS

常見的20種VC++編譯錯誤資訊集合

1、fatal error C1010: unexpected end of file while looking for precompiled header directive。  尋找預編譯標頭檔案路徑時遇到了不該遇到的檔案尾。(一般是沒有#include "stdafx.h")  2、fatal er

linux常見錯誤的錯誤碼及錯誤資訊對照

一些常見的錯誤的值,print出來的只有值,對應的錯誤列表,我在linux核心中找到了,分享出來。對比檢視會相對方便。 #define EPERM   1 /* Operation not permitted */ #define ENOENT   2 /* No such

[常見問題解答-ASP.NET]分析器錯誤資訊: 未能載入型別“Application1.XXX”

錯誤資訊: 分析器錯誤資訊: 未能載入型別“WebApplication1.Global”。 或者: 分析器錯誤資訊: 未能載入型別“WebApplication1.WebForm1”。 解決方法:請按照下面的步驟進行: 1.看看你上次修改程式後,是不是沒有編譯通過?如果沒

常見系統錯誤資訊分析

[   27.959314] BUG: soft lockup - CPU#0 stuck for 22s! [swapper/0:1] [   27.959334] Modules linked in: [   27.959347]  [   27.959361] CP

nginx常見錯誤

不能 被拒絕 sed 請求 delet 輸出 cep 個人 available 404 bad request 一般原因:請求的Header過大 解決方法:配置nginx.conf相關設置 client_header_buffer_size 16k; large_c

Ubuntu 搭建svn服務器 ,以及常見錯誤解決方案

mkdir creat mod 服務 csdn 解決 details 守護 center 一、安裝命令: 1)以root身份登錄。執行:sudo su -命令 2)執行安裝命令:apt-get install subversion 二、創建項目目錄 1)mkdir /

JDK源碼調試常見錯誤

jdk 技術 ges 選擇 第一條 找不到 需要 進行 根據 1、刪除不需要的代碼,即swing相關的代碼 2、執行命令時要將前提環境進入文件夾如下: 起初沒有完全執行第一條,因為網上說可以根據需要選擇相關的代碼,於是就沒有刪除,以後第一次模仿網上的例子的時候要按照原

github常見錯誤整理!

cti could tail 我們 fatal detail 提示 文件 fig文件 1.fatal: remote origin already exists.錯誤 如果輸入$ Git remote add origin [email protected]/*

php上傳文件常見錯誤

php style input error 今天 ont 大小 配置文件 inpu 今天在文件上傳過程中遇到的文件上傳不過去,和網頁報錯,最後經查看總結有以下幾個方面 上傳文件錯誤碼 error=0 正常上傳 error=1 上傳的大小超過了input[type=file]

在myeclipse中使用maven前常見錯誤及解決辦法

eclips aam lai loj yate ren err jar ued %E4%BD%BF%E7%94%A8CHttpFile%E4%BB%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E6%AD%A3%E7%A1%AE%E7%9A%

Hbase 常見錯誤總結——摘自忘了

cti status 不同步 fat reducer led cep issue html 一、執行$ hbase hbck 命令時,出現以下提示: Invalid maximum heap size: -Xmx4096m The specified size excee

ubuntu常見錯誤--Could not get lock /var/lib/dpkg/lock解決

nbsp 程序 被鎖 終端 nis cto not pro -- ubuntu常見錯誤--Could not get lock /var/lib/dpkg/lock解決 通過終端安裝程序sudo apt-get install xxx時出錯: E: Could no

solr中的一些常見錯誤

pri port java.net data ror lec net jdb exc (1)Caused by: java.lang.ClassNotFoundException: Unable to load jdbcDataSource or org.apache.so

Mongodb 參數說明及常見錯誤處理

spa 子目錄 產生 文件名 securecrt 添加 refused air 密碼 在 CentOS7 上安裝 MongoDB 1 通過 SecureCRT 連接至 CentOS7 服務器; 2 進入到 /usr/l

大數據常見錯誤

it1、用./bin/spark-shell啟動spark時遇到異常:java.net.BindException: Can‘t assign requested address: Service ‘sparkDriver‘ failed after 16 retries!解決方法:add export SP

【Git】常見錯誤提示解決辦法和常用方法

log image 解決 遠程 添加 logs 遠程倉庫 錯誤 ima 1.添加遠程倉庫時提示fatal: remote origin already exists. 先刪除遠程倉庫,再添加遠程倉庫 最後再push 2.修改本地文件(比如README.md)後,更新到g

ecshop常見錯誤的處理方法

fin 路徑名 一個 acc 版權 nbsp Language notice 自己的 用ecshop,其中出現了不少錯誤,經常是滿世界找原因,今天分享幾個問題的解決辦法,方便大家及時處理。如果有相關的ecshop問題歡迎跟帖咨詢問題1:出現錯誤代碼:ECshop lib_b

MVC MVC常見錯誤及解決辦法

.cn log entity ash cnblogs vid services ron strong MVC常見錯誤及解決辦法 問題1: 必須添加對程序集“EntityFramework, Version=5.0.0.0, Culture=neutral,