UNIXwork

Ein paar Features des GNU-Buildsystem

08. Februar 2017

Software, die das GNU-Buildsystem verwendet, lässt sich mit ./configure gefolgt von make und make install kompilieren und installieren. Mit diesem Artikel möchte ich auf ein paar Features dieses Buildsystems hinweisen.

Build-Verzeichnis

Anstatt das configure-Script im Root-Verzeichnis der Software auszuführen, geht dies auch von einem anderen aus. Dies hat den Vorteil, dass alle erstellten Dateien in einem anderen Verzeichnis landen, also z.B.:

mkdir build
cd build
../configure
make

Nicht nur alle von configure erstellten Dateien landen dann im build-Verzeichnis, sondern auch alle Objekt-Dateien und was sonst noch so durch make erstellt wird.

config.site

Ein weiteres interessante Feature ist, dass das configure-Script am Anfang die Datei prefix/share/config.site lädt. Diese kann normale Shell-Kommandos enthalten. Anstatt also immer per Hand die gewünschten Umgebungsvariablen zu setzen, oder Dinge wie das libdir anzupassen, kann man diese Einstellungen über die config.site erledigen. Siehe Setting Site Defaults.

Make Targets

Alle kompilierten und andere durch make erstellte Dateien entfernt man mit make clean. Mit make distclean kann man auch alle durch configure erstellte Dateien löschen. Desweiteren gibt es noch make maintainer-clean, das alle reproduzierbaren Dateien löscht, bis auf das configure script und andere Dateien, die für configure erforderlich sind. Auch interessant ist make check, was Tests für die Software ausführt (falls welche vorhanden sind).

Desweiteren möchte ich noch mal meinen Artikel über den DESTDIR-Parameter bei make install erwähnen.

Autor: Olaf | 0 Kommentare | Tags: shell, gnu, make

Alternativer Installationsort bei make install

16. Dezember 2016

Die üblichen Schritte beim Kompilieren von Open-Source-Software sind:

./configure --prefix=/usr
make
make install

Damit kompiliert man die Software und installiert sie unter /usr. Es kann vorkommen, dass man die Dateien woanders hin installieren möchte, als bei configure angegeben (z.B. beim Erstellen von Packages). Nach dem Kompilieren nochmal ./configure aufrufen wäre falsch. Die richtige Methode ist bei make install den DESTDIR-Parameter mit anzugeben.

make install DESTDIR=/path

Damit wird beispielsweise eine Datei nicht nach $PREFIX/bin installiert, sondern nach $DESTDIR$PREFIX/bin.

Wer keine GNU autotools nutzt, sondern Makefiles per Hand schreibt, sollte bei seinem install-Target daher vor jedem Installationsort ein $(DESTDIR) einfügen, damit Paketbauer nicht die Dateien von Hand zusammen sammeln müssen.

Autor: Olaf | 0 Kommentare | Tags: make