Dies ist das erste Mal, dass ich versuche, etwas auf einem Linux-Computer zu kompilieren und zu installieren. Ich habe die neueste Version von https://github.com/processone/exmpp über git erhalten und die Anweisungen gelesen, die besagen:
2. Erstellen und installieren
Exmpp verwendet die Autotools. Daher ist der Prozess ziemlich verbreitet:
$ ./configure $ make $ sudo make install
nach typ ./configure
bekomme ich den fehler
Kann install-sh, install.sh oder shtool in ac-aux nicht finden
Google half wenig bis gar nichts. Ich bin mir überhaupt nicht sicher, was ich tun soll. Jede Hilfe wäre sehr dankbar
Nun, ich habe die Antwort von sebastian_k ausprobiert und es hat bei mir nicht funktioniert (ist auf
./configure
halbem Weg mit einem extrem komischen Fehler abgestürzt).Was jedoch für mich funktioniert hat, war das Kopieren der Anweisungen, die in diesem Build-Protokoll verwendet wurden
Die Kurzversion (damit Sie nicht selbst durchwaten müssen) lautet:
quelle
autoreconf -i
ist die richtige Antwort (diev
undf
sind in der Regel optional)Diese Frage und die meisten anderen Antworten hier ergeben sich aus einem Missverständnis darüber, wie Projekte, die das GNU Build System (auch bekannt als Autotools) verwenden, verteilt werden. Tatsächlich scheint das Missverständnis bei der vom OP erwähnten Erlang XMPP-Bibliothek bei den Entwicklern zu liegen.
Die Software richtig beziehen
Wenn Sie nur ein mit den GNU Autotools veröffentlichtes Projekt kompilieren und installieren möchten, sollten Sie es nicht aus dem Versionsverwaltungssystem auschecken . Sie sollten stattdessen die vom Entwickler bereitgestellte gepackte Quellversion herunterladen . Diese werden normalerweise in Form von Tarballs auf der Projektwebsite verteilt. Bei Projekten, die vollständig auf GitHub, Savannah oder einem ähnlichen Hosting-Service gehostet werden, befinden sich diese Tarballs normalerweise hinter einem Link mit der Bezeichnung "Download" oder "Releases". Sie entpacken das Paket und sprechen eine Variante der Standardbeschwörung aus
./configure && make && sudo make install
. Das ist alles; Sie müssen keines der GNU-Autotools aufrufen und müssen nicht einmal die GNU-Autotools auf Ihrem System installiert haben.Der Grund, warum Sie als Benutzer die GNU-Autotools nicht benötigen, um ein mit Autotools gepacktes Projekt zu kompilieren, ist, dass der Entwickler bereits die verschiedenen Autotools-Programme verwendet hat, um ein "Distribution-Tarball" zu generieren, mit dem die Software auf jedem erstellt werden kann Unix-ähnliches System. Das Distribution-Tarball enthält ein hoch portierbares
configure
Skript, das die Build-Umgebung durchsucht, nach Abhängigkeiten sucht und einMakefile
an Ihr System angepasstes Skript erstellt.Wann brauchen Sie Autotools?
Der einzige Grund, warum Sie die GNU-Autotools selbst installieren und aufrufen sollten, ist, wenn Sie Entwicklungsarbeiten an einem mit Autotools erstellten Projekt durchführen möchten . Und selbst dann werden Sie wahrscheinlich die Autotools nicht benötigen, es sei denn, Sie ändern die Abhängigkeiten des Projekts. In diesem Fall würden Sie tatsächlich benötigen die ursprüngliche Quelle zu überprüfen, um geeignete Änderungen an den Autotools spezifischen Eingabedateien (
configure.ac
,Makefile.am
usw.), und die Autotools laufen auf ihnen eine neue zu generierenconfigure
Datei. Wenn Sie das überarbeitete Paket unabhängig veröffentlichen möchten, verwenden Sie das von Autotools generierte Makefile, um ein neues Distribution-Tarball zu generieren, und veröffentlichen Sie dieses Tarball dann irgendwo online.Das Problem ist, dass einige Entwickler ihr Quell-Repository öffentlich verfügbar machen, ihre Distribution-Tarballs jedoch nicht veröffentlichen (oder es schwierig machen, herauszufinden, wo sie veröffentlicht werden). Zum Beispiel, anstatt die Veröffentlichung ihrer Verteilung tarballs als GitHub veröffentlicht , die Erlang XMPP Bibliothek GitHub Releases sind tarballs des rohen Quellrepository. Dies macht es unmöglich, das Projekt ohne die GNU-Autotools zu kompilieren, was den gesamten Zweck der Verwendung von Autotools zunichte macht.
TL; DR Zusammenfassung
Die GNU-Autotools werden von Entwicklern verwendet, um portable Quellcode-Pakete für Benutzer zu erstellen. Benutzer sollten aus diesen Quellcode-Paketen herunterladen und kompilieren, nicht den Originalcode aus dem Versionsverwaltungssystem. Wenn die Entwickler diese Quellpakete nicht bereitstellen, verwenden sie Autotools nicht korrekt und sollten vorsichtig mit einer feuchten Forelle geschlagen werden, bis sie den Fehler ihres Weges erkennen.
quelle
./configure && make && sudo make install
wie im zweiten Absatz vorgeschlagen gelaufen .Ich hatte dieses Problem und fand es an der folgenden Zeile in
configure.ac
:Die Zeile war an sich nicht schlecht, musste jedoch näher an den oberen Rand der
configure.ac
Datei verschoben werden.quelle
Bitte gehen Sie wie folgt vor, um dieses Problem zu beheben:
Dann machen Sie die Installation
quelle
Wenn Sie versuchen, GNU Octave aus dem Mercurial-Repository zu kompilieren, stoßen Sie möglicherweise auf dieses Problem. Das Update besteht darin, ausgeführt zu werden,
./bootstrap
während Sie sich im Stammverzeichnis des Quellbaums befinden.quelle
sudo apt-get install automake autoconf
es funktioniert erfolgreich
quelle
Ich hatte ein ähnliches Problem, als ich
./configure
einen Quellcode ausprobierte und den gleichen Fehler wie beim Posten bekam. Schließlich löste meine Probleme durch Eingabe des Codes:quelle
Nach der Installation des
autogen
Pakets wurde dieser Fehler imwolfSSL
Build behoben .quelle
Ich hatte einen etwas anderen Fehler:
configure: error: cannot find install-sh, install.sh, or shtool in "." "./.." "./../.."
Es stellte sich heraus, dass configure nicht finden konnte
build-aux/install-sh
. Ich habe es so verlinktln -s build-aux/install-sh .
dann baut es.
Hoffe das hilft jemandem da draußen!
quelle