Autoconf, Libtool e un AC_PROG_LIBTOOL non definito


17

Sto provando a creare una libreria e le istruzioni README devono chiamare configure.ac, quindi make.

Sfortunatamente, sto riscontrando un errore:

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

Ora, so di aver installato libtool (sto eseguendo Scientific Linux 6.2 (non aggiornato) e ho usato yum --downloadonly per ottenere gli rpms di automake, autoconf, libtool e libtool-devel per ogni evenienza).

Sono installati e attualmente libtool vive in / usr / share / libtool. Tuttavia, autoconf non riesce a trovarlo.

Tutti i risultati di Google erano del tipo "installa libtool", il che non mi aiuta affatto. Qualsiasi aiuto o guida sarebbe molto apprezzato. Non sono sicuro se il problema sia che rpm -i ha rovinato ottenere libtool qui, o se ho bisogno di collegare / usr / share / libtool da qualche altra parte (quindi quale e qualunque altra cosa può trovarlo).

Risposte:


11

Non ero soddisfatto di tutte le risposte "appena reinstallate" che ho trovato su Internet in vari forum, quindi ero legato e determinato a risolverlo senza installare un libtool non distro. (Sono in esecuzione su CentOS 7.)

La lampadina sopra la mia testa si è illuminata quando ho letto https://www.gnu.org/software/automake/manual/html_node/Macro-Search-Path.html . Il percorso di ricerca utilizzato per trovare i file macro è quello definito da --prefix, che per impostazione predefinita è di solito /usr/local. Quindi autoconf per un pacchetto che verrà installato nelle /usr/localricerche /usr/local/share/aclocal-APIVERSIONe/usr/local/share/aclocal .

In molte distro, incluso CentOS7, i sette file macro per libtoolssono installati in /usr/share/aclocalanziché in /usr/local/share/aclocal. Di conseguenza, non vengono trovati quando il pacchetto che si sta creando imposta il prefisso/usr/local .

Per risolvere questo problema se hai già una /usr/local/share/aclocaldirectory, digita quanto segue come root:

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

Per risolvere questo problema se non si dispone di una /usr/local/share/aclocaldirectory, digitare quanto segue come root:

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

Voilà - problema risolto.


Un grande consiglio, più o meno risolto questo problema (aggravante, persistente) per me su un cluster CentOS 7. Se il progetto viene fornito con un autogen.sh, puoi anche modificare la exec autoreconflinea per includerla -I /usr/share/alocalinsieme alle altre opzioni, cosa che ho effettivamente fatto. Il comando effettivo invocato per generare lo configurescript è quindi autoreconf -v -f -i -I /usr/share/aclocal.
TheDudeAbides

11

devi installare libtool

in Ubuntu:

sudo apt-get install libtool

in redhat basato:

yum install libtool

5
La domanda diceva già che questo non è il problema.
Kevin Panko,

9

Ho anche installato libtool e altri in directory non standard, e questo errore è che autoconf non è in grado di trovare le macro m4 di libtool. Sì, può essere causato dal fatto che libtool non viene installato, ma anche che si trova in una directory di installazione non standard. Ecco la mia soluzione:

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

che ho inserito nel mio .bash_profile


2
Un altro modo per farlo: autoreconf -I $ HOME / install / libtool / share / aclocal
Moraru Lilian

1

È necessario reinstallarlo per correggere l'errore, quindi attenersi alla seguente procedura:

1] Rimuovi l'attuale libtool se installato: sudo apt-get purge libtool

2] Scaricalo dal sito ufficiale https://www.gnu.org/software/libtool/

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

4] Inserisci la cartella e digita: ./configure && make

5] Installalo: sudo make install

E hai finito, l'errore dovrebbe essere corretto!


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

Ora so di aver installato libtool ...

Ho scoperto che questo di solito indica che non hai libtoolinstallato gli strumenti di sviluppo (anche se potresti averlolibtool installato).

Dovresti installare libltdl-devsu Debian e Ubuntu; e libtool-ltdl-develsu Fedora.


Ecco le ricerche per i pacchetti.

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
...
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.