возможно неопределенный макрос: AC_MSG_ERROR - PullRequest
106 голосов
/ 11 января 2012

У меня есть следующее в configure.ac:

AC_CHECK_PROGS(MAKE,$MAKE make gmake,error)
if test "x$MAKE" = "xerror" ;then
  AC_MSG_ERROR([cannot find a make command])
fi

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

configure.ac:45: error: possibly undefined macro: AC_MSG_ERROR
  If this token and others are legitimate, please use m4_pattern_allow.
  See the Autoconf documentation.

Строки, которые были недавно добавлены выше:

AC_CONFIG_MACRO_DIR([m4])
LT_INIT

Может кто-нибудь объяснить, что вызывает эту ошибку и как отследить проблему?

РЕДАКТИРОВАТЬ: Добавление сведений о различиях.

Коробка, которая работает:

uname -a Linux host1 2.6.38-13-generic #53-Ubuntu SMP Mon Nov 28 19:33:45 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

automake: 1.11.1
autoconf: 2.67
m4: 1.4.14
libtoolize: 2.2.6b

Ящик, который не работает:

Linux host2 2.6.32-35-generic-pae #78-Ubuntu SMP Tue Oct 11 17:01:12 UTC 2011 i686 GNU/Linux

automake: 1.11.1
autoconf: 2.65
m4: 1.4.13
libtoolize: 2.2.6b

НОВОЕ РЕДАКТИРОВАНИЕ: только 32-битные машины испытывают эту трудность.

ОБНОВЛЕНО Я могу воспроизвести проблему на компьютере CentOS с autoconf 2.67, automake 1.11.1, libtool 2.2.6b и m4 1.4.14. Это просто ошибка 32-битных машин?

Ответы [ 17 ]

222 голосов
/ 27 января 2012

У меня была такая же проблема, и я обнаружил, что пакет pkg-config отсутствует.

После установки пакета все сгенерировано правильно.

31 голосов
/ 20 января 2012

Рекомендуется использовать autoreconf -fi вместо ручного вызова aclocal;autoconf;automake; #and whatever else для правильного заполнения aclocal.m4 и т. Д.

Добавление ACLOCAL_AMFLAGS = -I m4 (к верхнему уровню Makefile.am) и AC_CONFIG_MACRO_DIR([m4]) в настоящее время по-прежнему необязательно, если вы не используете собственные файлы m4, но, конечно, выполнение этого заставит процесс замолчать :)

27 голосов
/ 23 июня 2016

У меня была эта проблема с моим собственным configure.ac, но в данном случае (и в интересах всех, кто здесь находится в Google) это произошло потому, что я случайно цитировал AC_MSG_ERROR, поэтому он воспринимался как строка:

AX_BOOST_BASE([1.42], [], [AC_MSG_ERROR([Could not find Boost])])

Как только я убрал квадратные скобки вокруг макроса AC_MSG_ERROR, он заработал:

AX_BOOST_BASE([1.42], [], AC_MSG_ERROR([Could not find Boost]))

В этих комментариях говорится, что вы должны установить pkg-config, или в каком-то пакете отсутствует точка.Предполагается, что AC_MSG_ERROR работает и выдает полезное сообщение типа «Вам необходимо установить пакет XYZ», но из-за некоторых проблем AC_MSG_ERROR не работает.Установка пакета XYZ, безусловно, устранит ошибку, но только потому, что после ее установки больше не нужно печатать сообщение об ошибке!

Таким образом, установка pkg-config или определенного пакета просто обходитпроблема, это фактически не решает это.

11 голосов
/ 12 января 2017

У меня тоже была похожая проблема .. Мое решение -

apt-get install libcurl4-openssl-dev

(у меня уже был установлен libcurl), у меня работало по крайней мере ..

11 голосов
/ 18 октября 2014

Я столкнулся с такой же проблемой при работе с CentOS 7

В некоторых случаях проблема исчезла после установки libcurl-devel (libcurl уже установлено на этом компьютере)

3 голосов
/ 25 октября 2016

Для Debian.Необходимые пакеты: m4 automake pkg-config libtool

3 голосов
/ 11 января 2012

Вы настраиваете локальный каталог 'm4'?Например,

> aclocal -I m4 --install

Некоторые пакеты поставляются со сценарием оболочки autogen.sh или initgen.sh для запуска glibtoolize, autoheader, autoconf, automake.Вот скрипт autogen.sh, который я использую:

#! /bin/sh

case `uname` in Darwin*) glibtoolize --copy ;;
  *) libtoolize --copy ;; esac

autoheader
aclocal -I m4 --install
autoconf

automake --foreign --add-missing --force-missing --copy

РЕДАКТИРОВАТЬ

Возможно, вам потребуется добавить ACLOCAL_AMFLAGS = -I m4 к верхнему уровню Makefile.am.

2 голосов
/ 11 января 2012

Ошибка генерируется автом4te. Если все настроено правильно, часть кода, которая генерирует эту ошибку, никогда не должна видеть «AC_MSG_ERROR», потому что она должна была быть расширена m4 до этого момента. Вы говорите, что ошибка происходит только "в некоторых настройках". Я бы предположил, что в этих настройках ваша установка autoconf будет fubar. Возможно, у вас установлена ​​несовместимая версия m4.

2 голосов
/ 22 апреля 2013

Использование MacOS X

sudo port install pkgconfig

было решением!

2 голосов
/ 04 октября 2018

У меня была такая же проблема на RHEL7.5 с otto-de / libvmod-uuid

Исправлено установкой пакетов "autoconf-archive"

...