Autoconf, Libtool y un AC_PROG_LIBTOOL indefinido


17

Estoy tratando de construir una biblioteca, y las instrucciones README son llamar a configure.ac, luego hacer.

Lamentablemente, me encuentro con un error:

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

Ahora, sé que tengo instalado libtool (estoy ejecutando Scientific Linux 6.2 (sin actualizar), y he usado yum --downloadonly para obtener los rpms de automake, autoconf, libtool y libtool-devel por si acaso).

Están instalados y libtool actualmente vive en / usr / share / libtool. Sin embargo, autoconf parece no poder encontrarlo.

Todos los resultados de Google fueron del tipo 'instalar libtool', lo que no me ayuda en absoluto. Cualquier ayuda u orientación sería muy apreciada. No estoy seguro de si el problema es que rpm -i me equivoqué al obtener libtool aquí, o si necesito vincular / usr / share / libtool a otro lugar (para que lo pueda encontrar todo lo demás).

Respuestas:


11

No estaba satisfecho con todas las respuestas de "solo reinstalar" que he encontrado en todo el Internet en varios foros, por lo que estaba obligado y decidido a resolver esto sin instalar una libtool sin distribución. (Estoy corriendo en CentOS 7.)

La bombilla sobre mi cabeza se encendió cuando leí https://www.gnu.org/software/automake/manual/html_node/Macro-Search-Path.html . La ruta de búsqueda utilizada para encontrar los archivos de macro es la definida por --prefix, que por defecto suele ser /usr/local. Entonces autoconf para un paquete que se instalará en las /usr/localbúsquedas /usr/local/share/aclocal-APIVERSIONy /usr/local/share/aclocal.

En muchas distribuciones, incluida CentOS7, los siete archivos macro para libtoolsse instalan en /usr/share/aclocallugar de debajo /usr/local/share/aclocal. En consecuencia, no se encuentran cuando el paquete que está creando establece el prefijo /usr/local.

Para solucionar esto si ya tiene un /usr/local/share/aclocaldirectorio, escriba lo siguiente como 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

Para solucionar esto si no tiene un /usr/local/share/aclocaldirectorio, escriba lo siguiente como root:

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

Voilà - problema resuelto.


Gran consejo, más o menos solucionó este problema (persistente) que me agrava mucho en un clúster CentOS 7. Si el proyecto se envía con un autogen.shtambién puede modificar la exec autoreconflínea para incluir -I /usr/share/alocaljunto con las otras opciones, que es lo que realmente hice. El comando real invocado para generar el configurescript es entonces autoreconf -v -f -i -I /usr/share/aclocal.
TheDudeAbides

11

debes instalar libtool

en ubuntu:

sudo apt-get install libtool

en redhat basado:

yum install libtool

55
La pregunta ya decía que este no es el problema.
Kevin Panko

9

También instalé libtool y otros en directorios no estándar, y este error es en realidad autoconf no poder encontrar las macros m4 de libtool. Sí, puede deberse a que libtool no se está instalando, sino también a estar en un directorio de instalación no estándar. Aquí está mi solución:

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

que puse en mi .bash_profile


2
Otra forma de hacer esto: autoreconf -I $ HOME / install / libtool / share / aclocal
Moraru Lilian

1

Debe reinstalarlo para corregir el error, así que siga estos pasos:

1] Elimine libtool actual si está instalado: sudo apt-get purge libtool

2] Descárguelo del sitio web oficial https://www.gnu.org/software/libtool/

3] Untarlo: tar -xzvf "name of the tar_file"

4] Ingrese la carpeta y escriba: ./configure && make

5] Instalarlo: sudo make install

Y ya está, ¡el error debe ser reparado!


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

Ahora, sé que tengo instalado libtool ...

He descubierto que esto generalmente indica que no tiene libtoolinstalado un equipo de desarrollo (aunque puede haberlo libtoolinstalado).

Debe instalar libltdl-deven Debian y Ubuntu; y libtool-ltdl-develen Fedora.


Aquí están las búsquedas de los paquetes.

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
...
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.