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
...