Autoconf, Libtool und ein undefiniertes AC_PROG_LIBTOOL


17

Ich versuche, eine Bibliothek zu erstellen, und die README-Anweisungen lauten configure.ac und make.

Leider bin ich auf einen Fehler gestoßen:

configure.ac:75 :error: possibly undefined macro: AC_PROG_LIBTOOL
    If this token is legitimate please use m4_pattern_allow

Jetzt weiß ich, dass ich libtool installiert habe (ich verwende Scientific Linux 6.2 (nicht aktualisiert) und habe yum --downloadonly verwendet, um die RPMs von automake, autoconf, libtool und libtool-devel für alle Fälle abzurufen).

Sie sind installiert und libtool befindet sich derzeit in / usr / share / libtool. Autoconf scheint es jedoch nicht zu finden.

Alle Google-Ergebnisse waren von der Art 'install libtool', was mir überhaupt nicht weiterhilft. Jede Hilfe oder Anleitung wäre sehr dankbar. Ich bin nicht sicher, ob das Problem ist, dass rpm -i es vermasselt hat, Libtool hierher zu bringen, oder ob ich das / usr / share / Libtool mit einem anderen Ort verknüpfen muss (also was und alles andere kann es finden).

Antworten:


11

Sie müssen libtool installieren

in Ubuntu:

sudo apt-get install libtool

in redhat basierend:

yum install libtool

5
Die Frage sagte schon, das ist nicht das Problem.
Kevin Panko

10

Ich war nicht zufrieden mit all den Antworten, die ich im Internet in verschiedenen Foren gefunden habe, und war daher fest entschlossen, das Problem zu lösen, ohne ein Nicht-Distributions-Libtool zu installieren. (Ich laufe auf CentOS 7.)

Die Glühbirne über meinem Kopf leuchtete auf, als ich https://www.gnu.org/software/automake/manual/html_node/Macro-Search-Path.html las . Der Suchpfad, der zum Finden der Makrodateien verwendet wird, ist der von definierte --prefix, der normalerweise standardmäßig verwendet wird /usr/local. Also autoconf für ein Paket, das zum /usr/localsuchen /usr/local/share/aclocal-APIVERSIONund installieren wird /usr/local/share/aclocal.

In vielen Distributionen, einschließlich CentOS7, werden die sieben Makrodateien für libtoolsunter /usr/share/aclocalund nicht unter installiert /usr/local/share/aclocal. Folglich werden sie nicht gefunden, wenn das Paket, das Sie erstellen, das Präfix setzt /usr/local.

Um dies zu beheben, wenn Sie bereits ein /usr/local/share/aclocalVerzeichnis haben, geben Sie Folgendes als root ein:

for file in argz libtool ltdl ltoptions ltsugar ltversion lt~obsolete
do
  ln -s /usr/share/aclocal/$file.m4 /usr/local/share/aclocal/$file.m4
done

Um dies zu beheben, wenn Sie kein /usr/local/share/aclocalVerzeichnis haben, geben Sie Folgendes als root ein:

ln -s /usr/share/aclocal /usr/local/share/aclocal

Voilà - Problem gelöst.


Toller Tipp, mehr oder weniger dieses (suuuper-erschwerende, anhaltende) Problem für mich auf einem CentOS 7-Cluster behoben. Wenn das Projekt mit einem ausgeliefert wird autogen.sh, können Sie auch die exec autoreconfZeile ändern , um sie -I /usr/share/alocalzusammen mit den anderen Optionen einzuschließen, was ich tatsächlich getan habe. Der eigentliche Befehl zum Generieren des configureSkripts lautet dann autoreconf -v -f -i -I /usr/share/aclocal.
TheDudeAbides

9

Ich habe auch libtool und andere in nicht standardmäßigen Verzeichnissen installiert, und dieser Fehler ist, dass autoconf die m4-Makros von libtool nicht finden kann. Ja, es kann daran liegen, dass libtool nicht installiert ist, sondern sich in einem nicht standardmäßigen Installationsverzeichnis befindet. Hier ist meine Lösung:

export ACLOCAL_PATH=$HOME/install/libtool/share/aclocal:$ACLOCAL_PATH

was ich in meine .bash_profile


1
Eine andere Möglichkeit, dies zu tun: autoreconf -I $ HOME / install / libtool / share / aclocal
Moraru Lilian

1

Sie müssen es erneut installieren , um den Fehler zu beheben. Führen Sie dazu die folgenden Schritte aus:

1] Entfernen Sie das aktuelle Libtool, falls installiert: sudo apt-get purge libtool

2] Laden Sie es von der offiziellen Website https://www.gnu.org/software/libtool/ herunter.

3] Untar it: tar -xzvf "name of the tar_file"

4] Ordner eingeben und eingeben: ./configure && make

5] Installiere es: sudo make install

Und fertig, Fehler sollte behoben sein!


0
configure.ac:75 :error: possibly undefined macro: AC_PROG_LIBTOOL
    If this token is legitimate please use m4_pattern_allow

Jetzt weiß ich, dass ich libtool installiert habe ...

Ich habe festgestellt, dass dies normalerweise darauf hinweist, dass Sie keine libtoolEntwicklungsausrüstung installiert haben (obwohl Sie möglicherweise libtoolinstalliert haben).

Sie sollten libltdl-devauf Debian und Ubuntu installieren ; und libtool-ltdl-develauf Fedora.


Hier finden Sie die Suche nach den Paketen.

Fedora

$ yum search libtool
======================== Name Exactly Matched: libtool =========================
libtool.x86_64 : The GNU Portable Library Tool
======================= Summary & Name Matched: libtool ========================
libtool-ltdl.x86_64 : Runtime libraries for GNU Libtool Dynamic Module Loader
libtool-ltdl.i686 : Runtime libraries for GNU Libtool Dynamic Module Loader
libtool-ltdl-devel.x86_64 : Tools needed for development using the GNU Libtool
                          : Dynamic Module Loader
libtool-ltdl-devel.i686 : Tools needed for development using the GNU Libtool
                        : Dynamic Module Loader
=========================== Summary Matched: libtool ===========================
mingw32-libltdl.noarch : Runtime libraries for GNU Libtool Dynamic Module Loader
mingw64-libltdl.noarch : Runtime libraries for GNU Libtool Dynamic Module Loader

Ubuntu

$ apt-cache search libtool
autotools-dev - Update infrastructure for config.{guess,sub} files
libltdl-dev - System independent dlopen wrapper for GNU libtool
libltdl7 - System independent dlopen wrapper for GNU libtool
libtool - Generic library support script
libtool-bin - Generic library support script (libtool binary)
libtool-doc - Generic library support script
...
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.