make(1) make(1)
NAME
make - Gruppen von Dateien verwalten
SYNTAX
make [Option ...] [Makro-Definition ...] [Ziel ...]
BESCHREIBUNG
Bei der modularen Programmierung bestehen Programme meist aus mehreren
Dateien. make bietet eine Methode zum Aktualisieren solcher Programme.
make verwendet ein makefile, in dem Sie Ziele festlegen und angeben
können, wie ein Ziel von anderen Zielen abhängt. Wurde eine Quelldatei
geändert, erzeugt make das Programm neu, indem es genau die Teile neu
übersetzt, die direkt oder indirekt von der geänderten Datei abhängen.
make erstellt das Ziel neu, wenn es älter ist als mindestens eine der
Dateien, von denen es abhängt. make berücksichtigt die Abhängigkeits-
beziehungen der Dateien untereinander und ermittelt Datum und Uhrzeit
der letzten Änderung einer Datei.
Das makefile heißt normalerweise makefile, Makefile, s.makefile oder
s.Makefile. Folgt man dieser Benennungskonvention, können Sie make
ohne Angabe von Argumenten aufrufen. make sucht nach dem makefile im
aktuellen Dateiverzeichnis bzw. im Verzeichnis SCCS und generiert das
Ziel neu, wenn mindestens eine Änderung stattgefunden hat.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
make(1) make(1)
OPTIONEN
-e Überschreibt die Definitionen in makefiles durch Umgebungsvaria-
blen.
-f makefile
makefile wird als Name einer Beschreibungsdatei angesehen.
-i Ignoriert Fehlermeldungen von Kommandos, die in einer Kommando-
folge stehen. make setzt die Bearbeitung auch nach Fehlern fort.
.IGNORE im makefile bewirkt dasselbe.
-k Bricht die Kommandofolge ab, wenn in einem Eintrag des makefiles
ein Fehler auftritt. Die Bearbeitung wird bei allen anderen Zie-
len fortgesetzt, die vom fehlerhaften Ziel unabhängig sind. -k
überschreibt vorangegangene -S-Optionen.
-n Dient als Testhilfe. Alle Kommandos werden ausgegeben, auch die
mit vorangestelltem @. Ausgeführt werden nur Kommandos mit voran-
gestelltem Pluszeichen +.
-p Gibt eine vollständige Liste der Makrodefinitionen und der
Beschreibung der Zieldateien aus.
-q Gibt den Status Null zurück, wenn die Zieldatei aktuell ist. Ein
Status ungleich Null gibt an, daß die Zieldatei neu erstellt wer-
den muß. Die Zieldatei wird nicht verändert, jedoch werden Kom-
mandos mit vorangestelltem Pluszeichen + ausgeführt.
-r Ignoriert die vordefinierten Regeln.
-s Unterdrückt das Setzen eines neuen Zeitstempels und die Ausgabe
der ausgeführten Kommandos. .SILENT als Ziel in dem makefile
bewirkt dasselbe.
-S Beendet sich, wenn in einem Eintrag des makefiles ein Fehler auf-
tritt. Dies ist die Standardeinstellung. -S überschreibt vorange-
gangene -k-Optionen.
-t Gibt den Zielen des makefiles einen neuen Zeitstempel und diese
werden als aktuell angenommen. Ausgeführt werden nur Kommandos
mit vorangestelltem Pluszeichen +.
-- Ende der Optionenliste. Die Angabe ist nötig, wenn das erste
Argument mit - beginnt.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
make(1) make(1)
Erzeugen eines makefiles
Das mit der Option -f angegebene makefile ist eine sorgfältig struktu-
rierte Datei mit expliziten Anweisungen zum Aktualisieren von Program-
men. Die Datei enthält eine Reihe von Einträgen, die Abhängigkeiten
angeben. Die erste Zeile eines Eintrags ist eine durch Leerzeichen
getrennte, nicht leere Liste von Zielen, dann folgt ein :, danach eine
(möglicherweise leere) Liste der erforderlichen Dateien oder Abhängig-
keiten. Auf ein ; folgender Text und alle nachfolgenden Zeilen, die
mit einem Tabulator beginnen, sind Shell-Kommandos, die zur Aktuali-
sierung des Ziels ausgeführt werden sollen. Die erste nicht leere
Zeile, die nicht mit einem Tabulator oder # anfängt, beginnt eine neue
Abhängigkeit oder Makrodefinition. Shell-Kommandos können durch die
Angabe von <Backslash><Neue-Zeile-Zeichen> über mehrere Zeilen gehen.
Alles, was von make ausgegeben wird (mit Ausnahme des ersten Tabula-
tors), geht direkt und unverändert an die Shell. Daher erzeugt
echo a\
b
die Ausgabe von a b genau wie dies auch mit der Shell erfolgen würde.
Kommandos, die über mehrere Zeilen gehen, dürfen insgesamt maximal
LINEMAX lang sein, wenn die Anweisung .POSIX verwendet wird.
Kommentare werden von # und dem Neue-Zeile-Zeichen umschlossen.
Das folgende makefile besagt, daß pgm von den beiden Dateien a.o und
b.o abhängig ist, die ihrerseits von ihren jeweiligen Quelldateien
(a.c und b.c) sowie von der gemeinsamen Datei incl.h abhängen:
pgm: a.o b.o
cc a.o b.o -o pgm
a.o: incl.h a.c
cc -c a.c
b.o: incl.h b.c
cc -c b.c
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
make(1) make(1)
Ausführung eines makefiles
Kommandozeilen werden nacheinander jeweils von einer eigenen Shell
ausgeführt. Mit der SHELL-Umgebungsvariablen bzw. dem SHELL-Makro kann
die von make zur Ausführung von Kommandos verwendete Shell angegeben
werden. Der Standard ist /usr/bin/sh.
Die folgenden Anweisungen können in einem makefile angegeben werden,
um die Ausführung zu steuern:
.POSIX
make unterstützt in vollem Umfang die XPG4-Beschreibung. Andern-
falls weicht make in einigen Punkten von der Beschreibung ab, um
die Ablauffähigkeit bestehender makefiles zu gewährleisten.
.DEFAULT
Wenn eine Datei angelegt werden muß, jedoch keine ausdrücklichen
Kommandos oder relevanten Standardregeln vorliegen, werden die
bei .DEFAULT angegebenen Kommandos verwendet.
.IGNORE
Für alle von diesem Ziel abhängigen Dateien werden Fehlermeldun-
gen von Kommandos ignoriert. Ist keine Datei angegeben, ent-
spricht die Wirkung der Option -i.
.PRECIOUS
Von diesem Ziel abhängige Dateien werden nicht gelöscht, falls
das Quit- oder Interrupt-Signal empfangen wird. Ist keine Datei
angegeben, werden alle Dateien beibehalten.
.SILENT
Für alle von diesem Ziel abhängigen Dateien wird die Ausgabe der
ausgeführten Kommandos unterdrückt. Ist keine Datei angegeben,
entspricht die Wirkung der Option -s.
Die Ausführung einzelner Kommandos kann durch Voranstellen der Zeichen
@, - oder + gesteuert werden:
@ die Ausgabe des Kommandos wird unterdrückt
- Fehler werden ignoriert
+ das Kommando wird immer ausgeführt, auch wenn eine der Optionen
-n, -q oder -t gesetzt ist
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
make(1) make(1)
Eine Zeile wird ausgegeben, wenn sie ausgeführt wird, es sei denn, die
Option -s ist vorhanden, oder der Eintrag .SILENT ist für die Datei
gültig oder die Anfangszeichenkette enthält ein @. Option -n gibt das
Kommando aus, ohne es auszuführen, außer wenn der Kommandozeile ein +
vorangestellt ist (dann wird die Zeile immer ausgeführt). Die Option
-t aktualisiert das geänderte Datum einer Datei ohne Ausführen von
Kommandos (außer wenn einem Kommando ein + vorangestellt ist).
make wird normalerweise (bzw. wenn die Option -S gesetzt ist) durch
Kommandos beendet, die einen Status ungleich Null zurückgeben. Wenn
die Option -i vorhanden ist, oder der Eintrag .IGNORE für die Datei
gilt, oder die erste Zeichenkette des Kommandos - enthält, wird der
Endestatus ignoriert. Wenn die Option -k vorhanden ist, wird die
Arbeit am aktuellen Eintrag verlassen, jedoch in anderen Verzweigun-
gen, die nicht von diesem Eintrag abhängen, fortgeführt.
Die Zieldatei wird durch Unterbrechung und Verlassen gelöscht, außer
der Eintrag .PRECIOUS ist für sie gültig.
Umgebung
Die Umgebung wird von make gelesen. Alle Variablen werden als Makrode-
finitionen verstanden und als solche verarbeitet - außer der SHELL-
Variablen. Der Wert der SHELL-Umgebungsvariablen wird nicht als Makro
verwendet und wird bei einer Definition des SHELL-Makros in einem
makefile oder auf der Kommandozeile nicht verändert. Die Umgebungsva-
riablen werden vor jedem makefile und unmittelbar nach den vordefi-
nierten Regeln verarbeitet. Daher werden Umgebungsvariablen von Makro-
zuweisungen in einem makefile überschrieben. Die Option -e bewirkt,
daß die Umgebung die Makrozuweisungen in einem makefile überschreibt.
Dateinamen-Zusätze und ihre entsprechenden Regeln in makefile über-
schreiben vordefinierte Regeln für diese Erweiterungen.
Die Umgebungsvariable MAKEFLAGS kann Makros und alle Eingabeoptionen
außer -f und -p enthalten, die für die Kommandozeile gültig sind. make
wertet die Variable vor der Kommandozeile aus. Das gleichnamige Makro
MAKEFLAGS (und die Variable, falls sie nicht definiert ist) wird auto-
matisch bei Aufruf von make mit den aktuellen Optionen und Makros
belegt bzw. ergänzt und bei Aufruf der Kommandos weitergereicht. Auf
diese Weise enthält das Makro MAKEFLAGS stets die aktuellen Definitio-
nen. Dies erweist sich als sehr nützlich für "super-makes". Tatsäch-
lich wird $(MAKE) bei Verwendung der Option -n auf jeden Fall ausge-
führt. Daher kann man ein make -n rekursiv bei einem ganzen Software-
system ausführen, um zu sehen, was ausgeführt worden wäre. Dies ist
deshalb möglich, weil das -n in MAKEFLAGS eingetragen wird und an wei-
tere Aufrufe von $(MAKE) weitergeleitet wird. Dies ist eine Möglich-
keit der Fehlersuche in allen makefiles für ein Softwareprojekt, ohne
tatsächlich etwas auszuführen.
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
make(1) make(1)
Die Umgebungsvariable PROJECTDIR gibt an, in welchem Verzeichnis
SCCS-Dateien gesucht werden sollen, falls sie nicht im aktuellen Ver-
zeichnis liegen. SCCS-Dateien werden jeweils in einem Unterverzeichnis
SCCS gesucht. Bei Angabe von relativen Pfadnamen wird zunächst das
HOME-Verzeichnis nach Unterverzeichnissen src bzw. source durchsucht.
Existieren diese Verzeichnisse nicht, wird der Pfad relativ zum aktu-
ellen Verzeichnis gesetzt.
Include-Dateien
Wenn include am Anfang einer Zeile in makefile erscheint und danach
ein Leerzeichen oder ein Tabulator folgt, wird der Rest der Zeile als
Dateiname interpretiert, dessen zugehörige Datei vom aktuellen Aufruf
nach Ersetzen von Makros gelesen wird.
Makro-Definitionen
Einträge der Form Zeichenkette1 = Zeichenkette2 sind Makrodefinitio-
nen. Zeichenkette2 wird als Folge aller Zeichen bis zu einem Kommen-
tarzeichen oder einem nicht entwerteten Neue-Zeile-Zeichen definiert.
Bei jedem anschließenden Auftreten wird
$(Zeichenkette1[:Ersatz1=[Ersatz2]]) durch Zeichenkette2 ersetzt. Die
runden Klammern sind optional, wenn ein Makroname mit einem Zeichen
verwendet wird und keine Ersetzungs-Regel vorhanden ist. Das optionale
:Ersatz1=Ersatz2 ist eine Ersetzungs-Regel. Bei Angabe dieser Regel
wird jedes sich nicht überschneidende Auftreten von Ersatz1 im angege-
benen Makro durch Ersatz2 ersetzt. Zeichenketten für diese Art von
Ersetzung werden durch Leerzeichen, Tabulatorzeichen, Neue-Zeile-
Zeichen und Zeilenanfänge begrenzt. Ein Beispiel für die Verwendung
der Ersetzungs-Regeln wird im Abschnitt "Bibliotheken" gezeigt.
Das SHELL-Makro wird besonders behandelt. Es wird mit dem Pfadnamen
des Kommandointerpreters sh(1) zur Verfügung gestellt. Die SHELL-
Umgebungsvariable tangiert nicht den Wert des SHELL-Makros. Wenn SHELL
im makefile definiert oder auf der Kommandozeile angegeben ist,
ersetzt es den ursprünglichen Wert der SHELL-Makros, aber ändert nicht
den Wert der SHELL-Umgebungsvariablen.
Interne Makros
Es gibt insgesamt fünf intern verwaltete Makros, die zum Schreiben von
Regeln für den Aufbau von Zielen nützlich sind.
$* stellt den Stamm des Dateinamens der aktuellen abhängigen Datei
dar, wobei der Zusatz gelöscht ist. Die Auswertung erfolgt nur
bei Ausführung der Abhängigkeitsregeln.
$@ stellt den vollen Zielnamen des aktuellen Ziels dar. Die Auswer-
tung erfolgt nur für ausdrücklich angegebene Abhängigkeiten.
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98
make(1) make(1)
$< wird nur bei Anwendung der Abhängigkeitsregeln oder der
.DEFAULT-Regel ausgewertet. Es ist das Modul, das in Bezug auf
das Ziel veraltet ist, d. h. der "angefertigte" abhängige Datei-
name. Auf diese Weise würde Makro $< in der Regel .c.o als .c-
Datei ausgewertet werden. Ein Beispiel für die Erstellung von
optimierten .o-Dateien aus .c-Dateien ist:
.c.o:
cc -c -O $*.c
oder:
.c.o:
cc -c -O $<
$? wird ausgewertet, wenn die expliziten Regeln des makefiles ausge-
wertet werden. Es ist die Liste der Vorbedingungen, die in Hin-
blick auf das Ziel veraltet sind.
$% wird nur ausgewertet, wenn das Ziel ein Teil einer Archivbibliot-
hek in der Form lib(datei.o) ist. In diesem Fall wird $@ als lib
ausgewertet, und $% als die Bibliotheksdatei datei.o.
Die Makros können alternative Formen aufweisen. Wenn ein Großbuchstabe
D oder F angehängt wird, ändert sich die Bedeutung in "Dateiverzeich-
nis-Teil" für D und "Dateiteil" für F. Daher bezieht sich $(@D) auf
den Dateiverzeichnis-Teil der Zeichenkette $@. Ist kein Dateiverzeich-
nis-Teil vorhanden, wird ./ erstellt. Wenn das Makro $? mehr als einen
Dateinamen enthält, expandieren die Makros $(?D) und $(?F) (bzw. ${?D}
und ${?F}) zu einer Liste Dateiverzeichnis-Teile und Dateinamen-Teile.
Standardregeln
Bestimmte Namen, wie z. B. solche, die auf .o enden, haben ableitbare
Abhängigkeitsbeziehungen wie z. B. .c, .s usw. Wenn für eine solche
Datei keine Aktualisierungskommandos in makefile definiert sind, wer-
den Dateien, die den Standard-Abhängigkeitsbeziehungen entsprechen
gesucht und übersetzt, um das Ziel zu erzeugen. Für diesen Fall hat
make Abhängigkeitsregeln, die durch Prüfung der Suffixe und Bestimmung
einer zur Anwendung geeigneten Abhängigkeitsregel den Aufbau von
Dateien aus anderen Dateien ermöglichen.
Folgende Standard-Abhängigkeitsregeln existieren:
.c .c~ .f .f~ .s .s~ .sh .sh~ .C .C~
.c.a .c.o .c~.a .c~.c .c~.o .f.a .f.o .f~.a .f~.f .f~.o
.h~.h .l.c .l.o .l~.c .l~.l .l~.o .s.a .s.o .s~.a .s~.o
.s~.s .sh~.sh .y.c .y.o .y~.c .y~.o .y~.y .C.a .C.o .C~.a
.C~.C .C~.o .L.C .L.o .L~.C .L~.L .L~.o .Y.C .Y.o .Y~.C
.Y~.o .Y~.Y
Seite 7 Reliant UNIX 5.44 Gedruckt 11/98
make(1) make(1)
Der Benutzer kann zu dieser Liste Regeln hinzufügen, indem diese in
die Datei makefile geschrieben werden.
Die Ableitung von Abhängigkeitsbeziehungen kann gesteuert werden. Die
Regel zur Erstellung einer Datei mit dem Suffix .o aus einer Datei mit
dem Suffix .c ist als Eintrag mit .c.o: als Ziel und ohne Abhängigkei-
ten spezifiziert. Mit dem Ziel in Zusammenhang stehende Shell-
Kommandos definieren die Regel zur Erstellung einer .o-Datei aus einer
.c-Datei. Ein Ziel, das keine Schrägstriche aufweist und mit einem
Punkt beginnt, wird als Regel angesehen und nicht als echtes Ziel.
Die Standardregeln für make sind in der Quelldatei rules.c für das
Programm make enthalten. Sie können lokal verändert werden. Um die in
make eingebauten Regeln auf einem beliebigen Gerät in einer für eine
Neuübersetzung geeigneten Form auszugeben, wird nachstehendes Kommando
verwendet:
make -pf - 2>/dev/null </dev/null
Eine Tilde in den obigen Regeln bezieht sich auf eine SCCS-Datei
[siehe sccsfile(4)]. Daher würde die Regel .c~.o eine SCCS-C-Quell-
datei in eine Objektdatei (.o) umwandeln. Da das s. der SCCS-Dateien
ein Dateiname-Präfix ist, ist es nicht mit dem Begriff von Suffix im
Sinn von make vereinbar. Daher stellt die Tilde eine Möglichkeit zur
Änderung eines Dateiverweises in einen SCCS-Dateiverweis dar.
Eine Regel mit nur einem Zusatz (z. B. .c:) ist die Definition dafür,
wie man x aus x.c aufbaut. Tatsächlich ist das andere Suffix leer.
Dies ist nützlich für den Aufbau von Zielen aus nur einer Quelldatei
(z. B. Shell-Prozeduren, einfache C-Programme).
Zusätzliche Suffixe können als Liste bei .SUFFIXES definiert werden.
Die Reihenfolge ist von Bedeutung; der erste mögliche Name, für den
eine Datei und eine Regel vorhanden sind, wird für die Erzeugung aus-
gewählt. Die Standardliste lautet:
.SUFFIXES .o .c .c~ .y .y~ .l .l~ .s .s~ .sh .sh~ .h .h~ .f .f~
.C .C~ .Y .Y~ .L .L~
Das obige Kommando zur Ausgabe der internen Regeln zeigt auch diese
Liste der auf der aktuellen Maschine implementierten Zusätze an.
Mehrfach-Suffix-Listen sind akkumulierend; .SUFFIXES: ohne Abhängig-
keiten löscht die Suffix-Liste.
Das bei "Erzeugen eines makefiles" angegebene Beispiel läßt sich damit
kürzer formulieren:
pgm: a.o b.o
cc a.o b.o -o pgm
a.o b.o: incl.h
Seite 8 Reliant UNIX 5.44 Gedruckt 11/98
make(1) make(1)
Die Standard-Abhängigkeitsregeln verwenden gewisse Makros, um die Auf-
nahme von optionalen Teilen in die erzeugte Kommandofolge zu ermögli-
chen. Zum Beispiel werden CFLAGS, LFLAGS und YFLAGS für Übersetzerop-
tionen von cc(1), lex(1) bzw. yacc(1) verwendet.
Mit der Anweisung .SCCSGET können die Standardkommandos zum Zugriff
auf SCCS-Dateien, die nicht im aktuellen Verzeichnis liegen, geändert
werden. Standardregel ist:
.SCCSGET: sccs $(SCCSFLAGS) get $(SCCSGETFLAGS) $@
Bibliotheken
Wenn eine Ziel- oder eine Abhängigkeitsbezeichnung Klammern enthält,
wird sie als Archivbibliothek angesehen, wobei die in Klammern ste-
hende Zeichenkette auf einen Eintrag in der Bibliothek verweist. So
verweisen lib(datei.o) und $(LIB)(datei.o) auf eine Archivbibliothek,
die datei.o enthält. Hierbei wird davon ausgegangen, daß das Makro LIB
vorher definiert wurde. Der Ausdruck $(LIB)(datei1.o datei2.o) ist
nicht zulässig. Zu Archivbibliotheken gehörende Regeln weisen die Form
.XX.a auf, wobei XX das Suffix der Datei ist, aus der der Archivein-
trag erstellt werden soll. Leider ist es bei der gegenwärtigen Imple-
mentierung erforderlich, daß XX sich vom Suffix des Archiveintrags
unterscheiden muß. Daher kann man nicht angeben, daß lib(datei.o) von
datei.o abhängig ist.
Es folgt die Beschreibung der häufigsten Anwendung der Archivschnitt-
stelle. Hier soll davon ausgegangen werden, daß alle Quelldateien C-
Quellen sind:
lib: lib(file1.o) lib(file2.o) lib(file3.o)
@echo lib is now up-to-date
.c.a:
$(CC) -c $(CFLAGS) $<
$(AR) $(ARFLAGS) $@ $*.o
rm -f $*.o
Tatsächlich ist diese Regel .c.a in make vordefiniert und hier über-
flüssig. Ein interessanteres, allerdings stärker begrenztes Beispiel
für eine Archivdatei-Wartung:
lib: lib(file1.o) lib(file2.o) lib(file3.o)
$(CC) -c $(CFLAGS) $(?:.o=.c)
$(AR) $(ARFLAGS) lib $?
rm $?
@echo lib is now up-to-date
.c.a:;
Seite 9 Reliant UNIX 5.44 Gedruckt 11/98
make(1) make(1)
In diesem Fall wird der Makro-Ersetzungsmechanismus verwendet. Die
Liste $? ist als der Satz von Objektdateinamen definiert (innerhalb
von lib), deren entsprechende C-Quelldateien veraltet sind. Der
Makro-Ersetzungsmechanismus ersetzt .o durch .c. Leider kann eine
Umwandlung in .c noch nicht vorgenommen werden, könnte aber in Zukunft
implementiert werden. Auch ist die Abschaltung der Regel .c.a: zu
beachten, die jede Objektdatei der Reihe nach erstellt hätte. Diese
besondere Konstruktion beschleunigt die Wartung der Archivbibliothek
beträchtlich. Sie wird recht umständlich, wenn die Archivbibliothek
eine Mischung von Assembler- und C-Programmen enthält.
DIAGNOSE
Bei fehlerhafter Ausgabe von make erscheint eine Fehlermeldung, die
ein Kürzel in der Form (bucodeno) enthält. Um diesen Code auszuwer-
ten, kann man das Kommando help codeno benutzen. Damit erhält man
eine ausführliche Erläuterung zu diesem Fehler. Beispiel:
make: *** Error code 1 (bu21) (ignored)
$ help bu21
bu21:
"*** Error code '...' " OR "*** Termination code ' ' "
This error is reported but does not occur in make(1). It
is associated with the last command executed. See the UNIX manual for
additional information on the error codes for that command. If
"ignored" has been printed on the line immediately following the above
error message, this error is ignored by make(1). Errors
will be ignored if the -i option was set on execution, or if the dummy
target .IGNORE appears in the makefile, or if the particular command was
prefaced with a minus sign (-).
Hinweis: Das Kommando help ist nicht internationalisiert.
INTERNATIONALE UMGEBUNG
Die Sprache der Meldungstexte wird durch die Umgebungsvariablen
LCALL, LCMESSAGES oder LANG bestimmt.
In der Standardeinstellung verhält sich das System so, als wäre es
nicht internationalisiert, d. h. die Meldungstexte erscheinen in eng-
lischer Sprache. Wenn Sie die Sprache der Meldungstexte ändern wollen,
müssen Sie eine dieser Variablen entsprechend setzen.
Ausführliche Informationen zu den Abhängigkeiten der Umgebungsvaria-
blen und zur Internationalisierung im allgemeinen finden Sie im Hand-
buch "Leitfaden für Programmierer: Internationalisierung - Lokalisie-
rung". Zur Einstellung der Benutzerumgebung siehe auch environ(5).
Seite 10 Reliant UNIX 5.44 Gedruckt 11/98
make(1) make(1)
HINWEISE
Einige Kommandos geben ungerechtfertigt einen Status ungleich Null
zurück; zur Lösung dieses Problems verwendet man -i oder die Option -
in der Kommandozeile.
Dateinamen mit den Zeichen = : @ können nicht verarbeitet werden. Kom-
mandos, die direkt von der Shell ausgeführt werden, insbesondere
cd(1), sind in make über Neue-Zeile-Zeichen hinweg wirkungslos. Die
Syntax lib(datei1.o datei2.o datei3.o) ist unzulässig. Es ist nicht
möglich, lib(datei.o) aus datei.o aufzubauen.
DATEIEN
[Mm]akefile und s.[Mm]akefile
/usr/bin/sh
SIEHE AUCH
cc(1), cd(1), lex(1), sh(1), yacc(1), printf(3S), sccsfile(4).
Kapitel "make" in "Leitfaden und Werkzeuge für die Programmierung mit
C".
Seite 11 Reliant UNIX 5.44 Gedruckt 11/98