GNU Make: Unterschied zwischen den Versionen

Aus Physik
Zur Navigation springen Zur Suche springen
 
K
 
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt)
Zeile 1: Zeile 1:
 
GNU Make ist ein Werkzeug, dass das Erzeugen ausführbarer Dateien aus
 
GNU Make ist ein Werkzeug, dass das Erzeugen ausführbarer Dateien aus
 
deren Sourcen und anderen Bestandteilen steuert. Die Informationen die
 
deren Sourcen und anderen Bestandteilen steuert. Die Informationen die
dazu notwendig sind bezieht make dabei aus einem Makefile. Durch die
+
dazu notwendig sind bezieht Make dabei aus einem Makefile. Durch die
 
Verwendung von Make ist das Kompilieren von Programmen angenehmer.
 
Verwendung von Make ist das Kompilieren von Programmen angenehmer.
 
Wie Make funktioniert und wie man Makefiles schreibt ist auf der Homepage des
 
Wie Make funktioniert und wie man Makefiles schreibt ist auf der Homepage des
Zeile 22: Zeile 22:
   
 
Hier verwendete Variablen:<br>
 
Hier verwendete Variablen:<br>
* CC: Compiler der verwendet werden soll
+
* CC: Compiler, der verwendet werden soll
 
* CFLAGS: Optionen mit denen der Compiler aufgerufen wird
 
* CFLAGS: Optionen mit denen der Compiler aufgerufen wird
 
** -g: Erzeugt Debugginginformation
 
** -g: Erzeugt Debugginginformation
 
** -Wall: Schaltet alle optionalen Warnungen ein
 
** -Wall: Schaltet alle optionalen Warnungen ein
* LDFLAGS: Optionen mit denen der Linker aufgerufen wird
+
* LDFLAGS: Optionen, mit denen der Linker aufgerufen wird
 
** -lm: Linkt auf Funktionen aus <math.h>
 
** -lm: Linkt auf Funktionen aus <math.h>
 
** -lgsl: Linkt auf Funktionen aus der libgsl ([[GNU Scientific Library]])
 
** -lgsl: Linkt auf Funktionen aus der libgsl ([[GNU Scientific Library]])
 
** -lgslcblas: Auch dieser flag ist bei der Verwendung der libgsl nötig
 
** -lgslcblas: Auch dieser flag ist bei der Verwendung der libgsl nötig
* VPATH: Angabe von Verzeichnissen (getrennt durch : ) die nach Sourcecode durchsucht werden sollen
+
* VPATH: Angabe von Verzeichnissen (getrennt durch : ) die nach Sourcecoden durchsucht werden sollen
   
 
Funktionsweise:
 
Funktionsweise:
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

Aktuelle Version vom 26. Juli 2010, 09:28 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 Sourcecoden 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.