GNU Make: Unterschied zwischen den Versionen

Aus Physik
Zur Navigation springen Zur Suche springen
 
Zeile 37: Zeile 37:
 
erzeugt die Dateien prog1.o und functions.o und fügt sie anschließend
 
erzeugt die Dateien prog1.o und functions.o und fügt sie anschließend
 
zu einer ausführbaren Datei zusammen. In diesem Beispiel werden dazu
 
zu einer ausführbaren Datei zusammen. In diesem Beispiel werden dazu
[http://www.gnu.org/software/make/manual/html_chapter/make_10.html#SEC103 implizite Regeln]
+
[http://www.gnu.org/software/make/manual/html_node/Implicit-Rules.html#Implicit-Rules implizite Regeln]
 
verwendet.<br>
 
verwendet.<br>
 
$ make all
 
$ make all

Version vom 7. Mai 2006, 11:00 Uhr

GNU Make ist ein Werkzeug, dass das Erzeugen ausführbarer Dateien aus deren Sourcen und anderen Bestandteilen steuert. Die Informationen die dazu notwendig sind bezieht make dabei aus einem Makefile. Durch die Verwendung von Make ist das Kompilieren von Programmen angenehmer. Wie Make funktioniert und wie man Makefiles schreibt ist auf der Homepage des GNU Projektes zu finden.

Beispiele

CC = gcc 
CFLAGS = -g -Wall 
LDFLAGS = -lm -lgsl -lgslcblas 
VPATH = ../include

all: prog1 prog2

prog1: prog1.o functions.o 

prog2: prog2.o functions.o

clean:
       rm *.o *.dat

Hier verwendete Variablen:

  • CC: Compiler der verwendet werden soll
  • CFLAGS: Optionen mit denen der Compiler aufgerufen wird
    • -g: Erzeugt Debugginginformation
    • -Wall: Schaltet alle optionalen Warnungen ein
  • LDFLAGS: Optionen mit denen der Linker aufgerufen wird
    • -lm: Linkt auf Funktionen aus <math.h>
    • -lgsl: Linkt auf Funktionen aus der libgsl (GNU Scientific Library)
    • -lgslcblas: Auch dieser flag ist bei der Verwendung der libgsl nötig
  • VPATH: Angabe von Verzeichnissen (getrennt durch : ) die nach Sourcecode durchsucht werden sollen

Funktionsweise: Ein Aufruf von

$ make prog1

erzeugt die Dateien prog1.o und functions.o und fügt sie anschließend zu einer ausführbaren Datei zusammen. In diesem Beispiel werden dazu implizite Regeln verwendet.

$ make all

baut die Programme prog1 und prog2 ebenfalls unter der Verwendung von impliziten Regeln. Ein Aufruf von

$ make clean

löscht alle Dateien die mit .o oder .dat enden. Hier ist der auszuführende Befehl explizit angegeben.