Autoconf, Libtool et un AC_PROG_LIBTOOL non défini


17

J'essaye de construire une bibliothèque, et les instructions README sont d'appeler configure.ac, puis de faire.

Malheureusement, je rencontre une erreur:

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

Maintenant, je sais que j'ai installé libtool (j'utilise Scientific Linux 6.2 (non mis à niveau), et j'ai utilisé yum --downloadonly pour obtenir les rpms d'automake, autoconf, libtool et libtool-devel au cas où).

Ils sont installés et libtool vit actuellement dans / usr / share / libtool. Cependant, autoconf ne semble pas pouvoir le trouver.

Tous les résultats de Google étaient du type «install libtool», ce qui ne m'aide pas du tout. Toute aide ou conseil serait vraiment apprécié. Je ne sais pas si le problème est que rpm -i a foiré libtool ici, ou si j'ai besoin de lier / usr / share / libtool à un autre endroit (afin que tout le reste puisse le trouver).

Réponses:


11

Je n'étais pas satisfait de toutes les réponses "il suffit de réinstaller" que j'ai trouvées partout sur Internet dans divers forums, j'étais donc déterminé et déterminé à résoudre cela sans installer un libtool non-distro. (Je cours sur CentOS 7.)

L'ampoule au-dessus de ma tête s'est allumée lorsque j'ai lu https://www.gnu.org/software/automake/manual/html_node/Macro-Search-Path.html . Le chemin de recherche utilisé pour rechercher les fichiers de macro est celui défini par --prefix, qui est généralement par défaut /usr/local. Autoconf donc pour un package qui sera installé dans les /usr/localrecherches /usr/local/share/aclocal-APIVERSIONet /usr/local/share/aclocal.

Sur de nombreuses distributions, y compris CentOS7, les sept fichiers de macro pour libtoolssont installés sous /usr/share/aclocalplutôt que sous /usr/local/share/aclocal. Par conséquent, ils ne sont pas trouvés lorsque le package que vous créez définit le préfixe /usr/local.

Pour résoudre ce problème si vous avez déjà un /usr/local/share/aclocalrépertoire, tapez ce qui suit en tant que 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

Pour résoudre ce problème si vous n'avez pas de /usr/local/share/aclocalrépertoire, tapez ce qui suit en tant que root:

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

Voilà - problème résolu.


Bon conseil, plus ou moins corrigé ce problème (suuuper-aggravant, persistant) pour moi sur un cluster CentOS 7. Si le projet est livré avec un, autogen.shvous pouvez également modifier la exec autoreconfligne pour l'inclure -I /usr/share/alocalavec les autres options, ce que j'ai fait. La commande réelle invoquée pour générer le configurescript est alors autoreconf -v -f -i -I /usr/share/aclocal.
TheDudeAbides

11

vous devez installer libtool

à Ubuntu:

sudo apt-get install libtool

en redhat basé:

yum install libtool

5
La question disait déjà que ce n'était pas le problème.
Kevin Panko

9

J'ai également installé libtool et d'autres dans des répertoires non standard, et cette erreur est en fait autoconf ne pouvant pas trouver les macros m4 de libtool. Oui, cela peut être dû au fait que libtool n'est pas installé, mais aussi par le fait qu'il se trouve dans un répertoire d'installation non standard. Voici ma solution:

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

que j'ai placé dans mon .bash_profile


2
Une autre façon de le faire: autoreconf -I $ HOME / install / libtool / share / aclocal
Moraru Lilian

1

Vous devez le réinstaller afin de corriger l'erreur, procédez comme suit:

1] Supprimez libtool actuel s'il est installé: sudo apt-get purge libtool

2] Téléchargez-le sur le site officiel https://www.gnu.org/software/libtool/

3] Décompressez-le: tar -xzvf "name of the tar_file"

4] Entrez le dossier et saisissez: ./configure && make

5] Installez-le: sudo make install

Et vous avez terminé, l'erreur devrait être corrigée!


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

Maintenant, je sais que libtool est installé ...

J'ai trouvé que cela indique généralement que vous n'avez pas d' libtooléquipement de développement installé (même si vous l'avez peut-être libtoolinstallé).

Vous devez installer libltdl-devsur Debian et Ubuntu; et libtool-ltdl-develsur Fedora.


Voici les recherches de packages.

Feutre

$ 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
...
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.