194 lines
9.0 KiB
HTML
194 lines
9.0 KiB
HTML
<HTML>
|
|
<HEAD>
|
|
<!-- This HTML file has been created by texi2html 1.54
|
|
from ../texi/make.texinfo on 19 July 2000 -->
|
|
|
|
<TITLE>GNU make - Errors Generated by Make</TITLE>
|
|
<link href="make_17.html" rel=Next>
|
|
<link href="make_15.html" rel=Previous>
|
|
<link href="make_toc.html" rel=ToC>
|
|
|
|
</HEAD>
|
|
<BODY>
|
|
<p>Go to the <A HREF="make_1.html">first</A>, <A HREF="make_15.html">previous</A>, <A HREF="make_17.html">next</A>, <A HREF="make_19.html">last</A> section, <A HREF="make_toc.html">table of contents</A>.
|
|
<P><HR><P>
|
|
|
|
|
|
<H1><A NAME="SEC124" HREF="make_toc.html#TOC124">Errors Generated by Make</A></H1>
|
|
|
|
<P>
|
|
Here is a list of the more common errors you might see generated by
|
|
<CODE>make</CODE>, and some information about what they mean and how to fix
|
|
them.
|
|
|
|
</P>
|
|
<P>
|
|
Sometimes <CODE>make</CODE> errors are not fatal, especially in the presence
|
|
of a <CODE>-</CODE> prefix on a command script line, or the <CODE>-k</CODE> command
|
|
line option. Errors that are fatal are prefixed with the string
|
|
<CODE>***</CODE>.
|
|
|
|
</P>
|
|
<P>
|
|
Error messages are all either prefixed with the name of the program
|
|
(usually <SAMP>`make'</SAMP>), or, if the error is found in a makefile, the name
|
|
of the file and linenumber containing the problem.
|
|
|
|
</P>
|
|
<P>
|
|
In the table below, these common prefixes are left off.
|
|
|
|
</P>
|
|
<DL COMPACT>
|
|
|
|
<DT><SAMP>`[<VAR>foo</VAR>] Error <VAR>NN</VAR>'</SAMP>
|
|
<DD>
|
|
<DT><SAMP>`[<VAR>foo</VAR>] <VAR>signal description</VAR>'</SAMP>
|
|
<DD>
|
|
These errors are not really <CODE>make</CODE> errors at all. They mean that a
|
|
program that <CODE>make</CODE> invoked as part of a command script returned a
|
|
non-0 error code (<SAMP>`Error <VAR>NN</VAR>'</SAMP>), which <CODE>make</CODE> interprets
|
|
as failure, or it exited in some other abnormal fashion (with a
|
|
signal of some type). See section <A HREF="make_5.html#SEC48">Errors in Commands</A>.
|
|
|
|
If no <CODE>***</CODE> is attached to the message, then the subprocess failed
|
|
but the rule in the makefile was prefixed with the <CODE>-</CODE> special
|
|
character, so <CODE>make</CODE> ignored the error.
|
|
|
|
<DT><SAMP>`missing separator. Stop.'</SAMP>
|
|
<DD>
|
|
<DT><SAMP>`missing separator (did you mean TAB instead of 8 spaces?). Stop.'</SAMP>
|
|
<DD>
|
|
This means that <CODE>make</CODE> could not understand much of anything about
|
|
the command line it just read. GNU <CODE>make</CODE> looks for various kinds
|
|
of separators (<CODE>:</CODE>, <CODE>=</CODE>, TAB characters, etc.) to help it
|
|
decide what kind of commandline it's seeing. This means it couldn't
|
|
find a valid one.
|
|
|
|
One of the most common reasons for this message is that you (or perhaps
|
|
your oh-so-helpful editor, as is the case with many MS-Windows editors)
|
|
have attempted to indent your command scripts with spaces instead of a
|
|
TAB character. In this case, <CODE>make</CODE> will use the second form of
|
|
the error above. Remember that every line in the command script must
|
|
begin with a TAB character. Eight spaces do not count. See section <A HREF="make_4.html#SEC21">Rule Syntax</A>.
|
|
|
|
<DT><SAMP>`commands commence before first target. Stop.'</SAMP>
|
|
<DD>
|
|
<DT><SAMP>`missing rule before commands. Stop.'</SAMP>
|
|
<DD>
|
|
This means the first thing in the makefile seems to be part of a command
|
|
script: it begins with a TAB character and doesn't appear to be a legal
|
|
<CODE>make</CODE> command (such as a variable assignment). Command scripts
|
|
must always be associated with a target.
|
|
|
|
The second form is generated if the line has a semicolon as the first
|
|
non-whitespace character; <CODE>make</CODE> interprets this to mean you left
|
|
out the "target: prerequisite" section of a rule. See section <A HREF="make_4.html#SEC21">Rule Syntax</A>.
|
|
|
|
<DT><SAMP>`No rule to make target `<VAR>xxx</VAR>'.'</SAMP>
|
|
<DD>
|
|
<DT><SAMP>`No rule to make target `<VAR>xxx</VAR>', needed by `<VAR>yyy</VAR>'.'</SAMP>
|
|
<DD>
|
|
This means that <CODE>make</CODE> decided it needed to build a target, but
|
|
then couldn't find any instructions in the makefile on how to do that,
|
|
either explicit or implicit (including in the default rules database).
|
|
|
|
If you want that file to be built, you will need to add a rule to your
|
|
makefile describing how that target can be built. Other possible
|
|
sources of this problem are typos in the makefile (if that filename is
|
|
wrong) or a corrupted source tree (if that file is not supposed to be
|
|
built, but rather only a prerequisite).
|
|
|
|
<DT><SAMP>`No targets specified and no makefile found. Stop.'</SAMP>
|
|
<DD>
|
|
<DT><SAMP>`No targets. Stop.'</SAMP>
|
|
<DD>
|
|
The former means that you didn't provide any targets to be built on the
|
|
command line, and <CODE>make</CODE> couldn't find any makefiles to read in.
|
|
The latter means that some makefile was found, but it didn't contain any
|
|
default target and none was given on the command line. GNU <CODE>make</CODE>
|
|
has nothing to do in these situations.
|
|
See section <A HREF="make_9.html#SEC86">Arguments to Specify the Makefile</A>.
|
|
<DT><SAMP>`Makefile `<VAR>xxx</VAR>' was not found.'</SAMP>
|
|
<DD>
|
|
<DT><SAMP>`Included makefile `<VAR>xxx</VAR>' was not found.'</SAMP>
|
|
<DD>
|
|
A makefile specified on the command line (first form) or included
|
|
(second form) was not found.
|
|
|
|
<DT><SAMP>`warning: overriding commands for target `<VAR>xxx</VAR>''</SAMP>
|
|
<DD>
|
|
<DT><SAMP>`warning: ignoring old commands for target `<VAR>xxx</VAR>''</SAMP>
|
|
<DD>
|
|
GNU <CODE>make</CODE> allows commands to be specified only once per target
|
|
(except for double-colon rules). If you give commands for a target
|
|
which already has been defined to have commands, this warning is issued
|
|
and the second set of commands will overwrite the first set.
|
|
See section <A HREF="make_4.html#SEC38">Multiple Rules for One Target</A>.
|
|
|
|
<DT><SAMP>`Circular <VAR>xxx</VAR> <- <VAR>yyy</VAR> dependency dropped.'</SAMP>
|
|
<DD>
|
|
This means that <CODE>make</CODE> detected a loop in the dependency graph:
|
|
after tracing the prerequisite <VAR>yyy</VAR> of target <VAR>xxx</VAR>, and its
|
|
prerequisites, etc., one of them depended on <VAR>xxx</VAR> again.
|
|
|
|
<DT><SAMP>`Recursive variable `<VAR>xxx</VAR>' references itself (eventually). Stop.'</SAMP>
|
|
<DD>
|
|
This means you've defined a normal (recursive) <CODE>make</CODE> variable
|
|
<VAR>xxx</VAR> that, when it's expanded, will refer to itself (<VAR>xxx</VAR>).
|
|
This is not allowed; either use simply-expanded variables (<CODE>:=</CODE>) or
|
|
use the append operator (<CODE>+=</CODE>). See section <A HREF="make_6.html#SEC57">How to Use Variables</A>.
|
|
|
|
<DT><SAMP>`Unterminated variable reference. Stop.'</SAMP>
|
|
<DD>
|
|
This means you forgot to provide the proper closing parenthesis
|
|
or brace in your variable or function reference.
|
|
|
|
<DT><SAMP>`insufficient arguments to function `<VAR>xxx</VAR>'. Stop.'</SAMP>
|
|
<DD>
|
|
This means you haven't provided the requisite number of arguments for
|
|
this function. See the documentation of the function for a description
|
|
of its arguments. See section <A HREF="make_8.html#SEC75">Functions for Transforming Text</A>.
|
|
|
|
<DT><SAMP>`missing target pattern. Stop.'</SAMP>
|
|
<DD>
|
|
<DT><SAMP>`multiple target patterns. Stop.'</SAMP>
|
|
<DD>
|
|
<DT><SAMP>`target pattern contains no `%'. Stop.'</SAMP>
|
|
<DD>
|
|
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 (<CODE>%</CODE>). See section <A HREF="make_4.html#SEC40">Syntax of Static Pattern Rules</A>.
|
|
|
|
<DT><SAMP>`warning: -jN forced in submake: disabling jobserver mode.'</SAMP>
|
|
<DD>
|
|
This warning and the next are generated if <CODE>make</CODE> detects error
|
|
conditions related to parallel processing on systems where
|
|
sub-<CODE>make</CODE>s can communicate (see section <A HREF="make_5.html#SEC53">Communicating Options to a Sub-<CODE>make</CODE></A>). This warning is
|
|
generated if a recursive invocation of a <CODE>make</CODE> process is forced
|
|
to have <SAMP>`-j<VAR>N</VAR>'</SAMP> in its argument list (where <VAR>N</VAR> is greater
|
|
than one). This could happen, for example, if you set the <CODE>MAKE</CODE>
|
|
environment variable to <SAMP>`make -j2'</SAMP>. In this case, the
|
|
sub-<CODE>make</CODE> doesn't communicate with other <CODE>make</CODE> processes and
|
|
will simply pretend it has two jobs of its own.
|
|
|
|
<DT><SAMP>`warning: jobserver unavailable: using -j1. Add `+' to parent make rule.'</SAMP>
|
|
<DD>
|
|
In order for <CODE>make</CODE> processes to communicate, the parent will pass
|
|
information to the child. Since this could result in problems if the
|
|
child process isn't actually a <CODE>make</CODE>, the parent will only do this
|
|
if it thinks the child is a <CODE>make</CODE>. The parent uses the normal
|
|
algorithms to determine this (see section <A HREF="make_5.html#SEC51">How the <CODE>MAKE</CODE> Variable Works</A>). If the makefile is constructed such that the parent
|
|
doesn't know the child is a <CODE>make</CODE> process, then the child will
|
|
receive only part of the information necessary. In this case, the child
|
|
will generate this warning message and proceed with its build in a
|
|
sequential manner.
|
|
|
|
</DL>
|
|
|
|
<P><HR><P>
|
|
<p>Go to the <A HREF="make_1.html">first</A>, <A HREF="make_15.html">previous</A>, <A HREF="make_17.html">next</A>, <A HREF="make_19.html">last</A> section, <A HREF="make_toc.html">table of contents</A>.
|
|
</BODY>
|
|
</HTML>
|