Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cc(1)

cd(1)

lex(1)

sh(1)

yacc(1)

printf(3S)

sccsfile(4)

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

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026