2013-10-09 4 views
12

Ich bin ein Neuling von Autotools. Von meinem Verständnis würde man die folgenden grundlegenden Schritte verwenden Software Autotools zu bauen:Warum wird "Autoreconf" nicht oft verwendet?

  1. autoreconf --install
  2. ./configure
  3. make

Allerdings habe ich festgestellt, dass die meisten Open-Source-Software-Pakete (auf Linux) braucht nicht den Schritt 1. Sie brauchen die meiste Zeit nur Schritt 2 und 3 um zu bauen. Es scheint, dass sie bereits mit Makefile.in verpackt sind. Ich frage mich warum? Codieren sie manuell die Makefile.in, oder der Softwareentwickler verwendet autoreconf, um die vor dem Erstellen des Softwarepakets zu generieren?

Danke.

+5

OK. Ich denke, ich habe selbst eine mögliche Antwort: Wenn der Benutzer "autoreconf" nicht ausführen muss, stellt das Softwarepaket weniger Anforderungen an das System des Endbenutzers. I.e. Der Endbenutzer muss Autotools nicht installiert haben. Ich denke, das ist eigentlich ein ziemlich großer und guter Grund. – user1783732

+1

Das ist richtig; Wenn "configure" ausgeführt wird, benötigt der Benutzer nur ein paar Skript-Interpreter (eine Bourne-Shell, sed, vielleicht auch perl) sowie die Compiler-Toolchain. Selbst wenn alle Bibliotheksabhängigkeiten fehlen, sollte das Skript 'configure' in der Lage sein, das Problem auszuführen und zu diagnostizieren oder es zu umgehen. Wenn Sie 'make dist-gzip' ausführen, erhalten Sie einen Tarball mit dem Skript' configure' sowie alle '* .in' Template-Dateien, die gepackt sind, so dass der Benutzer nicht die vorherigen Schritte ausführen muss, die Autotools erfordern. – DanielKO

Antwort

6

Der Software-Entwickler, die den Tarball (oder wer die Quellen von einem Versionskontrollsystem auscheckt) erstellt wird in der Regel von einem autoreconfbootstrap.sh oder autogen.sh genannt Skript aufrufen, die andere Dinge tun kann. autoreconf kann auch von Makefile aufgerufen werden (z. B. wenn configure.ac geändert wurde).

Die meisten Benutzer werden nie müssen autoreconf ausführen, auch diejenigen, die einige Änderungen an der Quelle vornehmen (z. B. Patches). Nur diejenigen, die Änderungen am Paket selbst vornehmen müssen (Änderungen an configure.ac und/oder Makefile.am vornehmen müssen), benötigen autoreconf.

2

Das Ausführen von autoreconf erfordert, dass die richtige Version von autotools bereits installiert ist. Dies führt zu einem Henne-Ei-Problem - wie erhalten Sie Autotools überhaupt? Es fügt auch eine zusätzliche Abhängigkeit hinzu, die die meisten Endbenutzer nicht wirklich benötigen.

Als Ergebnis am meisten Packager Autoreconf ausführen, bevor die Quell-Tarballs, die sie verteilen. Wenn Sie also einen solchen Tarball herunterladen, können Sie ihn konfigurieren und erstellen, ohne zuerst die Autotools zu installieren.