Fehler bei der Nichtübereinstimmung der libtool-Version


73

Beim Erstellen meiner Anwendung mit kdevelop 3.5 unter Ubuntu 10.04 werden folgende Fehler angezeigt:

libtool: Version mismatch error. This is libtool 2.2.6 Debian-2.2.6a-4, but the
libtool: definition of this LT_INIT comes from libtool 2.2.6b.
libtool: You should recreate aclocal.m4 with macros from libtool 2.2.6 Debian-2.2.6a-4
libtool: and run autoconf again.
make[2]: *** [wktools4] Error 63
make[2]: Target `all' not remade because of errors.
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
*** Exited with status: 2 ***

Wo kann ich die benötigte Version von libtool bekommen oder wie kann ich aclocal.m4 neu erstellen?

Antworten:


141

Versuche zu rennen

autoreconf --force --install
./configure
make

im Stammverzeichnis Ihres Projekts.

Wenn dies nicht funktioniert, führen Sie make maintainer-cleanzuerst die Ausführung aus und fahren Sie dann mit Schritt 1 fort.

Wenn dies immer noch nicht funktioniert, führen Sie make maintainer-cleanalle generierten Dateien im Stammverzeichnis Ihres Projekts aus und löschen Sie sie. einschließlich aclocal.m4, jedes m4Verzeichnis, jedes autom4te.cacheVerzeichnis configure, Makefile.in, config.h, config.h.in, config.status, libtool, ltmain.shgeht, etc. Dann zu Schritt 1.

Warum dies funktioniert: libtool und aclocal.m4sind beide Dateien, die von Ihrem Build-System generiert werden. Wenn sie nicht synchron sind (generiert von verschiedenen Versionen der Build-Tools), wird dieser Fehler angezeigt. Normalerweise sollte das nicht passieren, aber ein Beispiel für etwas, das es verursachen kann, ist das Einchecken generierter Dateien in die Quellcodeverwaltung.

Diese Lösung löscht und generiert alle automatisch generierten Dateien neu. Sobald sie gelöscht und neu generiert wurden, können sie nicht mehr synchron sein.


6
Ich möchte die Antwort nicht bearbeiten, weil ich sie nicht verstehe, aber ich hatte diesen Fehler und autoreconfwar nicht genug. Ich musste laufen:aclocal; libtoolize --force; autoheader; autoconf
djeikyb

2
autoreconftut nichts anderes, als all diese Programme für Sie auszuführen. Es ist wahrscheinlich eine gute Idee, die --forceOption hinzuzufügen . Ich werde die Antwort bearbeiten.
Ptomato

Ich habe dies mit PHP5 auf Ubuntu 12.04 versucht, aber nach diesem Befehl wurde es schlimmer: Ich kann danach nicht mehr ./configureerfolgreich ausführen
hek2mgl

Wenn es ein autogen.shoder ein bootstrapSkript gibt, führen Sie es zuerst aus.
Ptomato

4
Aber warum hilft das? Worum geht es bei der Versionsinkongruenz wirklich?
user1603472


8

Wenn Sie Anaconda verwenden, kann dies an libtool und autoconf aus verschiedenen Quellen liegen. Sie können dies überprüfen, indem Sie ausführen

which libtool

which autoconf

Mein libtool war von conda und autoconf war ein Systempaket. Autoconf deinstalliert und mit conda erneut installiert

apt remove -y autoconf (Ubuntu / Debian)

conda install -c anaconda autoconf

Hinweis: Möglicherweise müssen Sie auch automake installieren.

conda install -c anaconda automake


3

Vielleicht haben Sie zwei Libtools unterschiedlicher Version installiert. Versuchen Sie es apt-get remove all(bis Sie nichts bekommen, wenn Sie which libtoolin die Befehlszeile eingeben), dann apt-get installdie , die Sie mögen.


2
Ich habe das erst bemerkt, als ich welches Libtool ausgeführt habe und festgestellt habe, dass es auf meine Anaconda-Installation verweist. Vielen Dank!
Yadli

1

Versuchen Sie, aclocal auszuführen


1
Vielen Dank für Ihre Antwort. Könnten Sie bitte genauer sein? Welche Optionen muss ich verwenden? Vielen Dank!
mspoerr

0

Ich löse das libtool des Deinstallationssystems und installiere es von Upstream: git clone git: //git.savannah.gnu.org/libtool.git

sudo apt-get install texinfo autoconf automake machen
./bootstrap
./konfigurieren
machen
sudo make install

0

Keines der oben genannten hat funktioniert.

Dann funktionierte das:

autoconf -f
./configure
make

0

Keines der oben genannten hat funktioniert. Nachdem ich die Conda-Umgebung deaktiviert hatte, funktionierte es:

source deactivate


0

Ich stoße auch auf dieses Problem. In meinem Fall gibt es in der Ausgabe von ./autogen.sh:

libtoolize: Sie sollten den Inhalt der folgenden Dateien zu 'aclocal.m4' hinzufügen: libtoolize: '/aclocal/libtool.m4' libtoolize: '/aclocal/ltoptions.m4' libtoolize: '/aclocal/ltversion.m4' libtoolize: Erwägen Sie das Hinzufügen von 'AC_CONFIG_MACRO_DIRS ([m4])' zu configure.ac, libtoolize: und führen Sie libtoolize und aclocal erneut aus. libtoolize: Fügen Sie ACLOCAL_AMFLAGS in Makefile.am '-I m4' hinzu.

Ich hänge einfach den Inhalt der drei * .m4-Dateien unter / aclocal / an die Datei aclocal.m4 an:

cat <a path>/aclocal/libtool.m4 <a path>/aclocal/ltoptions.m4 <a path>/aclocal/ltversion.m4 >> aclocal.m4 

dann mach.


0

Hier ist der Fehler:

libtool: Version mismatch error.  This is libtool 2.4.2 Debian-2.4.2-1.11, but the
libtool: definition of this LT_INIT comes from libtool 2.4.6.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.2 Debian-2.4.2-1.11
libtool: and run autoconf again.

Keines der oben genannten hat funktioniert.

Dann funktionierte das:

wget http://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz -O /root/libtool-2.4.6.tar.gz
tar xzvf /root/libtool-2.4.6.tar.gz -C /root
cp -f /usr/share/libtool/build-aux/ltmain.sh /usr/share/libtool/build-aux/ltmain_sh
cp -f /root/libtool-2.4.6/build-aux/ltmain.sh /usr/share/libtool/build-aux/ltmain.sh

autoreconf -fi
./configure
make
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.