Automake-Fehler „./ltmain.sh“ nicht gefunden

Lesezeit: 3 Minuten

Benutzer-Avatar
Benutzer1345414

Ich habe mingw und msys mit installiert mingw-get-setup.exe. Ich habe auch Autotools (autoconf, automake, m4, libtool) in installiert C:\/opt/autotools.

Wenn ich automake starte kommt immer folgender Fehler:

configure.ac:11: error: required file './ltmain.sh' not found

Wenn ich kopiere ltmain.sh aus dem installierten Baum von libtool wird die Ausführung normal beendet.

Wie kann ich automake konfigurieren, um zu finden ltmain.sh ohne zu kopieren?

  • Sie müssen entweder Ihren Pfad anpassen oder den vollständigen Pfad zu ltmain.sh angeben

    – Chris Maes

    24. März 2014 um 7:20 Uhr


  • ltmain.sh ist in c:\opt\autotools\share\libtool\config .Und PATH=/c/opt/autotools/bin:/C/opt/autotools/share/libtool/config:.:/usr/local/bin

    – Benutzer1345414

    24. März 2014 um 7:31 Uhr


Benutzer-Avatar
Daniel KO

In einem (n autoconf/automake/libtool Projekt, das Sie ausführen müssen:

  • libtoolize: Dies kopiert/verlinkt einige Support-Skripte, einschließlich ltmain.sh (das ist die Hauptkomponente von libtool).
  • aclocal: Dadurch werden alle m4-Makros nachgeschlagen, die Ihr Konfigurationsskript benötigt, und eine lokale Kopie für einen einfacheren Zugriff erstellt.
  • autoheader: optional, wenn Sie verwenden möchten config.h/AC_CONFIG_HEADERSandernfalls werden alle Testergebnismakros eingebettet, wenn Sie den Compiler aufrufen.
  • autoconf: um alle verwendeten Makros zu erweitern configure.ac in die configure Skript.
  • automake: alle konvertieren Makefile.am hinein Makefile.in Vorlagen. Sie möchten dies wahrscheinlich mit aufrufen --add-missing damit zusätzliche Support-Skripte in Ihr Projekt verlinkt/kopiert werden können (wie z compile, missing, depcomp, test-driveretc).

Machen Sie sich keine Gedanken darüber, jedes Tool auszuführen. Gerade aufrufen autoreconf -i und es führt die Tools aus, die benötigt werden. Hinzufügen -v wenn Sie sehen möchten, welche Tools ausgeführt werden. Um Fehler zu vermeiden, fügen Sie einfach ein Skript wie dieses in das Stammverzeichnis Ihres Projekts ein:

#!/bin/bash -x
mkdir -p m4
exec autoreconf --install "$@"

Benutzer, die das Projekt direkt aus dem Quell-Repository auschecken/klonen, müssen dies ausführen ./bootstrap Skript mindestens einmal. Dies wird nicht benötigt, wenn der Benutzer eine Tarball-Distribution hat.

Automake kann ziemlich gut auf sich selbst aufpassen; Es ruft die oben genannten Tools bei Bedarf erneut auf, wenn Sie ausgeführt werden make. Aber wenn Sie eine defekte erzeugen Makefilemüssen Sie aufrufen ./bootstrap und ./configure wieder neu zu generieren Makefiles.

  • sehr hilfreich vielen Dank musste nur “sudo libtoolize && sudo aclocal && sudo autoheader && sudo autoconf && sudo automake –add-missing”

    – Mitermayer Reis

    8. Februar 2015 um 4:57 Uhr


  • @MitermayerReis Bei Bedarf sudo dann haben Sie keine Schreibberechtigung für das Verzeichnis und/oder die Dateien. Sind die Dateien Eigentum eines anderen Benutzers?

    – DanielKO

    8. Februar 2015 um 15:26 Uhr

  • @Mitermayer, ich denke, Sie sollten Ihren Kommentar als Lösung hinzufügen. Vielen Dank !

    – ranzig

    22. September 2016 um 13:17 Uhr

  • @ransch sudo ist nicht dazu gedacht, wahllos verwendet zu werden, aus dem gleichen Grund sollten Sie ein *nix-System nicht verwenden, das immer als root angemeldet ist. Das Kompilieren von Software ist keine administrative Aufgabe, es sollten keine erweiterten Berechtigungen erforderlich sein.

    – DanielKO

    23. September 2016 um 16:46 Uhr

  • Wo finde ich weitere Informationen zu den erforderlichen Schritten und der richtigen Reihenfolge? (libtoolize, autconf, automake, autoreconf usw.)

    – Wadim Kotow

    16. März 2017 um 11:21 Uhr

Wie DanielKO sagte, ltmain.sh wird erstellt von libtoolize.

Was aber, wenn nicht?

Folgende Voraussetzungen müssen erfüllt sein:

  1. configure.ac muss existieren und mindestens eines der folgenden Elemente enthalten: AM_PROG_LIBTOOL, AC_PROG_LIBTOOL, LT_INIT (siehe function func_require_seen_libtool in /usr/bin/libtoolize)

  2. Wenn configure.ac keine enthält a AC_CONFIG_AUX_DIRsucht libtoolize nach einer Datei namens „install-sh“ oder „install.sh“. ., .. und ../.. und wenn gefunden, benutze das als “auxdir” und installiere dort ltmain.sh (siehe function func_require_aux_dir innerhalb von libtoolize).

In meinem Fall habe ich an einem “Beispielprojekt” in einem Unterverzeichnis eines anderen Projekts gearbeitet, und das Beispielprojekt hatte keine AC_CONFIG_AUX_DIR in seiner configure.ac; Daher hat libtoolize das Stammverzeichnis des übergeordneten Projekts gefunden und ltmain.sh dort installiert, anstatt im Stammverzeichnis des Beispielprojekts.

1383360cookie-checkAutomake-Fehler „./ltmain.sh“ nicht gefunden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy