Autoconf, Libtool та невизначений AC_PROG_LIBTOOL


17

Я намагаюся створити бібліотеку, і вказівки README - викликати configure.ac, а потім робити.

На жаль, у мене виникає помилка:

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 автоматики, autoconf, libtool та libtool-devel на всякий випадок).

Вони встановлені, і libtool наразі живе в / usr / share / libtool. Однак autoconf, здається, не може його знайти.

Усі результати Google були типу "встановити libtool", що мені зовсім не допомагає. Будь-яка допомога чи настанова буде дуже вдячна. Я не впевнений, чи проблема полягає в тому, що rpm -i тут накрутив отримання libtool або якщо мені потрібно зв’язати / usr / share / libtool десь ще (так, що і все інше можна знайти).

Відповіді:


11

Я не був задоволений усіма відповідями "просто перевстановити", які я знайшов по всьому Інтернету на різних форумах, тому був зобов'язаний вирішити цю проблему, не встановлюючи 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

Voilà - проблема вирішена.


Чудова підказка, більш-менш виправлена ​​ця (надмірно обтяжуюча, наполеглива) проблема для мене на кластері CentOS 7. Якщо проект постачається разом із autogen.shвами, ви можете також змінити exec autoreconfрядок, щоб він включав -I /usr/share/alocalразом з іншими параметрами, що саме я і зробив. Фактична команда, яку викликають для створення configureсценарію, є autoreconf -v -f -i -I /usr/share/aclocal.
TheDudeAbides

11

ви повинні встановити libtool

в ubuntu:

sudo apt-get install libtool

на основі redhat:

yum install libtool

5
Питання, сказане вже, це не проблема.
Кевін Панько

9

Я також встановив libtool та інші в нестандартні каталоги, і ця помилка насправді autoconf не в змозі знайти макроси m4 libtool. Так, це може бути викликано тим, що libtool не встановлюється, а також тим, що він знаходиться в нестандартній папці установки. Ось моє виправлення:

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

яку я помістив у свою .bash_profile


2
Ще один спосіб зробити це: autoreconf -I $ HOME / install / libtool / share / aclocal
Морару Ліліан

1

Потрібно перевстановити її, щоб виправити помилку, тому виконайте наступні дії:

1] Видаліть поточний libtool, якщо він встановлений: sudo apt-get purge libtool

2] Завантажте його з офіційного веб-сайту https://www.gnu.org/software/libtool/

3] Untar it: tar -xzvf "name of the tar_file"

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

5] Встановіть його: sudo make install

І ви закінчили, помилку слід виправити!


0
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на Fedora.


Ось пошук пакетів.

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
...
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.