Open Source im professionellen Einsatz

Quellcodebäume

Im Tal des Codes

Mit Hilfe der Werkzeuge automake und autoconf lassen sich schnell installierbare und portable Quelltextbäume erstellen.

Und wieder einmal haben Sie ein tolles GNOME-Programm geschrieben - das kann man gar nicht oft genug machen -, aber es hapert doch an einem bestimmten Ende? Nämlich der Programmerstellung? Ihnen bereitet es Kopfschmerzen, die Benutzer Zeilen wie

gcc -c quelle.c `gnome-config libs cflags gnome gnomeui gnomecanvaspixbuf' -o quelle.o


eintippen zu lassen, vielleicht auch noch einmal für jede der Dateien? Und mit zusätzlichen Compilerflags? Um kurz darauf zu verlangen, das Ganze zu linken? Und zu guter Letzt müssen die Benutzer das fertige Binary auch noch von Hand in das Zielverzeichnis kopieren?

Doch Sie wollen viel lieber Komfort, Portabilität und Geschwindigkeit für die User einbauen. Das sind zwar gleich drei große Wünsche auf einmal - aber sie lassen sich selbstverständlich erfüllen.

Listing 1: Ein
simples Makefile für ein GNOME-Programm

1: CC=/usr/bin/gcc
2: CFLAGS=`gnome-config cflags gnome gnomeui`
3: LDFLAGS=`gnome-config libs gnome gnomeui`
4: OBJ=beispiel.o eins.o zwei.o
5: BINARIES=beispiel
6: 
7: all: $(BINARIES)
8: 
9: beispiel: $(OBJ)
10:     $(CC) $(LDFLAGS) -o $<@> $(OBJ)
11: 
12: .c.o:
13:     $(CC) $(CFLAGS) -c $<
14: 
15: clean:
16:     rm -rf $(OBJ) $(BINARIES)

Vorbau

Die obige Szenerie ist etwas übertrieben, denn Makefiles sind nicht schwierig zu schreiben. Es reicht, einfach make im Quelltextverzeichnis einzugeben, und das Programm wird erstellt. Ein simples Makefile für ein kurzes C-Programm in GNOME kann etwa wie in Listing 1 aussehen. Dennoch ist dieser Weg nicht immer und überall gangbar, denn die Annahmen von Orten, an denen sich Programme befinden, Pfadnamen und anderem muss der Benutzer eventuell noch von Hand editieren.

Das ist nicht das, was man haben möchte. Was man haben möchte und was Sie bestimmt schon einmal gesehen haben, manifestiert sich für den Benutzer im Wesentlichen in der Eingabe dreier Befehle:

./configure
make
make install


Der geneigte Leser wird sich eventuell verwundert die Augen reiben, da dieses Thema schon mal in diesem Magazin behandelt worden ist. Allerdings ist erstens nicht jeder interessierte Leser seit dem ersten Artikel dabei und zweitens ist bisher noch nicht auf die GNOME-spezifischen Eigenarten verwiesen worden, die beim Aufbau eines Quelltextbaums beachtet werden müssen. Und genau einen solchen wollen wir jetzt für unser Programm erstellen.

Struktur

Wichtig ist eine Struktur für den Quelltextbaum. Der Quellcode selber sollte von anderen Dingen, etwa der Dokumentation oder den Dateien zur Konfiguration, getrennt liegen, damit man leichter die Übersicht behält.

Wir erstellen uns also als Erstes ein Verzeichnis mit dem Namen beispiel als Platz für unseren Baum, erzeugen darin das Verzeichnis src für unseren Code und werfen dort alles hinein. Um bei den Dateien aus dem Makefile in Listing 1 zu bleiben, sind das die Dateien beispiel.c sowie eins.c, eins.h, zwei.c und zwei.h. Die erste dieser Dateien sieht aus wie in Listing 2, die restlichen vier sind leer und nur des Beispiels wegen mit von der Partie.

Dokumentation: Ein leidiger Schritt für jeden Programmierer, der von Mitentwicklern und Benutzern aber gedankt wird. Folgende Dateien gehören zu einem Quellverzeichnis:

Das sind die wichtigsten Dateien, es gibt noch andere. Woher bekommt man diese Dateien? Die ersten drei legt man natürlich selber an, wohingegen die letzten beiden am besten aus dem Verzeichnis von automake kopiert werden.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook