возможно неопределенный макрос: AC_PROG_LIBTOOL - PullRequest
0 голосов
/ 05 декабря 2018

Я хочу собрать protobuf, поэтому я просто клонирую пакет и cd в каталог.Когда я печатаю ./autogen.sh, произошла некоторая ошибка. когда я печатаю ./autogen.sh Я получаю обратный вызов:

configure.ac:104: error: possibly undefined macro: AC_PROG_LIBTOOL
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
autoreconf: /home/zhangxl/my/autoconf/bin/autoconf failed with exit status: 1

Кто-то сказал, что я должен установить libtool, но я уже установил autoconf, automake, libtool и m4, но всеиз них собраны из исходников, потому что я не могу получить пароль sudo. введите описание изображения здесь Это мой файл .bashrc:

export PATH=$PATH:/home/zhangxl/my/libtool/bin
export CPLUS_INCLUDE_PATH=/hpme/zhangxl/my/libtool/include:$CPLUS_INCLUDE_PATH
export LIBRARY_PATH=/home/zhangxl/my/libtool/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/home/zhangxl/my/libtool/lib:$LD_LIBRARY_PATH

Я думаю, что, возможно, файл .bashrc не верный, поэтому я хочу попросить о помощи, большое спасибо за ваши ответы.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

libtool - это больше, чем просто (набор) двоичных файлов.он также включает пару макросов m4 (которые будут использоваться autotools), среди них макрос AC_PROG_LIBTOOL.

Поскольку вы не выполнили «правильную» установку libtool, autoconf не находит этидополнительные макросы.

Найдите файлы типа libtool.m4, ltoptions.m4 ... (возможно, где-то в /home/zhangxl/my/libtool/share/aclocal/ и добавьте путь к вызову autoreconf. Что-то вроде:

autoreconf  -f -i -Wall,no-obsolete -I/home/zhangxl/my/libtool/share/aclocal/

(в случае, если вам интересно: autoreconf вызывается autogen.sh, ближе к концу этого скрипта; поэтому, когда вы вызываете autogen.sh, большинство вещей уже выполнено, только вызов autoreconfне удалось, и именно это исправляет вышеприведенная строка. Если вы хотите иметь возможность снова вызывать autogen.sh, вы должны изменить строку с помощью autoreconf , как показано выше)

0 голосов
/ 06 декабря 2018

Когда я набираю ./autogen.sh, произошла некоторая ошибка.

Цель Autotools состоит в том, чтобы они не были частью обычных сборок..Автоинструменты используются для построения системы сборки, которая является обязанностью сопровождающего пакета.Люди, которые просто хотят собрать проект, не должны (в соответствии с философией Autotools) вообще вызывать Autotools - вместо этого им следует использовать уже предоставленную им систему сборки, состоящую из скрипта configure, Makefile и заголовка.шаблоны, и т. д. ..

Таким образом, первое, что нужно попробовать, это всегда распаковывать чистую копию дистрибутива, и, без запуска autogen.sh, autoreconf,или аналогичный , выполните стандартную последовательность configure; make; make install.В этом случае Autotools даже не нужно устанавливать на хост сборки.Только в том случае, если необходимо изменить существующую систему сборки для вашей среды или если она вообще не предусмотрена, вы должны изучить (пере) сборку системы сборки.

Если вам нужно перестроить систему сборки - что не так уж редко, как хотелось бы GNU - тогда самый плавный путь вперед - это использовать те же версии Autotools, которые используют сопровождающие пакетов.Более поздние версии часто являются жизнеспособной заменой, но иногда они требуют корректировки входных данных Autotools.Старые версии могут быть проблематичными.Однако вы должны хорошо понимать, что это ставит вас в роли сопровождающего пакета, а не просто сборщика пакетов.Перестройка системы сборки открывает вам необходимость решать проблемы, характерные для этой задачи.

Иногда проблемы совместимости версий могут быть частично или полностью решены путем указания Autotools заменять сценарии и локальные макросы m4, в которые они устанавливаютсяисходное дерево проекта.Если проект предоставляет autogen.sh, он может или не может сделать это.Команда autoreconf --install --force, запускаемая из корня дерева исходного кода, позаботится обо всех этих частях Autotools, но может не выполнять других действий, которые autogen.sh делает.Вероятно, стоит потратить время на то, чтобы узнать, что делает ваш конкретный autogen.sh, и может быть полезно запустить оба autoreconf и autogen.sh, вероятно, в таком порядке.

Я думаю, может бытьневерный файл .bashrc

Маловероятно, что указанное вами сообщение об ошибке отражает проблему с конфигурацией вашей среды.Это может отражать проблему с вашими локальными инструментами Autotools - скорее, Libtool, чем с другими - но есть большая вероятность, что это отражает несовместимость между версиями Autotools, используемыми сопровождающими пакета, и версиями, которые вы создали.

...