Autoconf, Libtool e um AC_PROG_LIBTOOL indefinido


17

Estou tentando criar uma biblioteca e as instruções do README são para chamar configure.ac e, em seguida, make.

Infelizmente, estou com um erro:

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

Agora, eu sei que tenho o libtool instalado (estou executando o Scientific Linux 6.2 (sem atualização) e usei o yum --downloadonly para obter os rpms de automake, autoconf, libtool e libtool-devel, apenas no caso).

Eles estão instalados e o libtool atualmente vive em / usr / share / libtool. No entanto, o autoconf parece não conseguir encontrá-lo.

Todos os resultados do google eram do tipo 'install libtool', o que não me ajuda em nada. Qualquer ajuda ou orientação seria realmente apreciada. Não tenho certeza se o problema é que o rpm -i estragou a instalação do libtool aqui, ou se eu preciso vincular o / usr / share / libtool a outro lugar (para que todo mundo possa encontrá-lo).

Respostas:


11

Eu não estava satisfeito com todas as respostas "apenas reinstalar" que encontrei em toda a Internet em vários fóruns, por isso estava decidido a resolver isso sem instalar um libtool não-distro. (Estou executando no CentOS 7.)

A lâmpada acima da minha cabeça acendeu quando li https://www.gnu.org/software/automake/manual/html_node/Macro-Search-Path.html . O caminho de pesquisa usado para encontrar os arquivos de macro é o definido por --prefix, que por padrão geralmente é /usr/local. Então autoconf para um pacote que será instalado nas /usr/localpesquisas /usr/local/share/aclocal-APIVERSIONe /usr/local/share/aclocal.

Em muitas distros, incluindo o CentOS7, os sete arquivos de macro para libtoolssão instalados abaixo /usr/share/aclocale não abaixo /usr/local/share/aclocal. Consequentemente, eles não são encontrados quando o pacote que você está construindo define o prefixo /usr/local.

Para corrigir isso se você já possui um /usr/local/share/aclocaldiretório, digite o seguinte 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 corrigir isso se você não tiver um /usr/local/share/aclocaldiretório, digite o seguinte como root:

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

Voilà - problema resolvido.


Ótima dica, mais ou menos corrigido esse problema (persistente e agravante) para mim em um cluster do CentOS 7. Se o projeto for enviado com um, autogen.shvocê também poderá modificar a exec autoreconflinha para incluir -I /usr/share/alocaljunto com as outras opções, que foi o que eu realmente fiz. O comando real chamado para gerar o configurescript é então autoreconf -v -f -i -I /usr/share/aclocal.
TheDudeAbides 13/08/19

11

você deve instalar o libtool

no ubuntu:

sudo apt-get install libtool

em redhat baseado:

yum install libtool

5
A pergunta já dizia que esse não é o problema.
precisa

9

Também instalei o libtool e outros em diretórios não padrão, e esse erro é realmente autoconf, não sendo capaz de encontrar as macros m4 do libtool. Sim, isso pode ser causado pelo fato de o libtool não estar instalado, mas também por estar em um diretório de instalação não padrão. Aqui está a minha correção:

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

que eu coloquei na minha .bash_profile


2
Outra maneira de fazer isso: autoreconf -I $ HOME / instalação / libtool / share / aclocal
Moraru Lilian

1

Você precisa reinstalá- lo para corrigir o erro. Siga estas etapas:

1] Remova a libtool atual, se instalada: sudo apt-get purge libtool

2] Faça o download no site oficial https://www.gnu.org/software/libtool/

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

4] Digite a pasta e digite: ./configure && make

5] Instale: sudo make install

E pronto, o erro deve ser corrigido!


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

Agora, eu sei que tenho o libtool instalado ...

Descobri que isso geralmente indica que você não possui libtoolequipamentos de desenvolvimento instalados (embora você possa ter libtoolinstalado).

Você deve instalar libltdl-devno Debian e Ubuntu; e libtool-ltdl-develno Fedora.


Aqui estão as pesquisas para os pacotes.

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
...
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.