Autoconf, Libtool и неопределенный AC_PROG_LIBTOOL

Я пытаюсь собрать библиотеку, и инструкции README должны вызвать configure.ac, а затем make.

К сожалению, я сталкиваюсь с ошибкой:

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

Теперь я знаю, что у меня установлен libtool (у меня работает Scientific Linux 6.2 (без обновления), и я использовал yum --downloadonly для получения rpms от automake, autoconf, libtool и libtool-devel на всякий случай).

Они установлены, и в настоящее время libtool находится в /usr/share/libtool. Однако autoconf не может его найти.

Все результаты Google были типа "установить libtool", что мне совсем не помогло. Любая помощь или руководство будут очень признательны. Я не уверен, что проблема в том, что rpm -i облажался с получением libtool здесь, или мне нужно связать / usr / share / libtool где-то еще (так, чтобы кто-нибудь и все остальное смог найти его).

5 ответов

Я не был удовлетворен всеми "просто переустановленными" ответами, которые я нашел по всему Интернету на различных форумах, поэтому был полон решимости решить эту проблему, не устанавливая не дистрибутив libtool. (Я работаю на CentOS 7.)

Лампочка над моей головой загорелась, когда я прочитал https://www.gnu.org/software/automake/manual/html_node/Macro-Search-Path.html. Путь поиска, используемый для поиска файлов макроса, определяется путем --prefix, который по умолчанию обычно /usr/local, Таким образом, autoconf для пакета, который будет установлен в /usr/local поиск /usr/local/share/aclocal-APIVERSION а также /usr/local/share/aclocal,

На многих дистрибутивах, включая CentOS7, семь макрофайлов для libtools установлены под /usr/share/aclocal а не под /usr/local/share/aclocal, Следовательно, они не найдены, когда пакет, который вы собираете, устанавливает префикс для /usr/local,

Чтобы это исправить, если у вас уже есть /usr/local/share/aclocal каталог, введите следующее как 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

Чтобы это исправить, если у вас нет /usr/local/share/aclocal каталог, введите следующее как root:

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

Вуаля - проблема решена.

Вы должны установить libtool

в убунту:

sudo apt-get install libtool

в основе redhat:

yum install libtool

Я также установил libtool и другие файлы в нестандартные каталоги, и эта ошибка на самом деле означает, что autoconf не может найти макросы libtool m4. Да, это может быть вызвано не установкой libtool, но и тем, что он находится в нестандартном каталоге установки. Вот мое исправление:

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

который я поместил в свой .bash_profile

Вам необходимо переустановить его, чтобы исправить ошибку, поэтому выполните следующие действия:

1] Удалить текущий libtool, если он установлен: sudo apt-get purge libtool

2] Загрузите его с официального сайта https://www.gnu.org/software/libtool/

3] Распакуйте его: tar -xzvf "name of the tar_file"

4] Введите папку и введите: ./configure && make

5] Установите это: sudo make install

И все готово, ошибка должна быть исправлена!

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

Теперь я знаю, что у меня установлен libtool...

Я обнаружил, что это обычно означает, что у вас нет libtool механизм разработки установлен (хотя у вас может быть libtool установлены).

Вы должны установить libltdl-dev в Debian и Ubuntu; а также libtool-ltdl-devel на федоре.


Вот поиски пакетов.

мягкая фетровая шляпа

$ 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
...
Другие вопросы по тегам