возможно, неопределенный макрос: ошибка AC MSG
у меня есть следующее 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
кто-нибудь может объяснить, что вызывает эту ошибку и как отследить проблему?
EDIT: добавление сведений о различиях.
17 ответов:
У меня была такая же проблема, и я обнаружил, что отсутствует.
после установки пакета, все правильно.
рекомендуется использовать
autoreconf -fiвместо ручного вызоваaclocal;autoconf;automake; #and whatever elseдля правильного заполнения aclocal.М4 и так далее.добавлять
ACLOCAL_AMFLAGS = -I m4(на верхний уровень Makefile.am) иAC_CONFIG_MACRO_DIR([m4])В настоящее время все еще является необязательным, если вы не используете собственные файлы m4, но, конечно, это заставит замолчать proocess :)
у меня была эта проблема с моим собственным
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или конкретный пакет просто обходит проблему, на самом деле это не исправить.
Я испытал эту же проблему под CentOS 7
в случае мая, проблема ушла после установки
libcurl-devel(libcurlуже был установлен на этой машине)
У меня тоже была подобная проблема.. мое решение заключается в
apt-get install libcurl4-openssl-dev(У меня уже был установлен libcurl allready ) по крайней мере, работал на меня..
вы настраиваете локальный''? например,
> 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 --copyEDIT
возможно, вам придется добавить
ACLOCAL_AMFLAGS = -I m4на верхний уровеньMakefile.am.
ошибка генерируется autom4te. Если все настроено правильно, часть кода, которая генерирует эту ошибку, никогда не должна видеть "AC_MSG_ERROR", потому что она должна была быть расширена m4 до этого момента. Вы говорите, что ошибка происходит только"в некоторых настройках". Я бы предположил, что в этих настройках ваша установка autoconf является fubar. Возможно, у вас установлена несовместимая версия m4.
Это случилось со мной , когда я забыл a, в аргументах для локально определенного макроса. Потратил часы, пытаясь понять это (едва знаком с autotools)...
AC_CHECK_MACRO([Foo] AC_LOCAL_DO([......должен был
AC_CHECK_MACRO([Foo], # <-- Notice comma, doh! AC_LOCAL_DO([......похоже, что он должен был дать мне ошибку или что-то в этом роде, но я полагаю, что будучи макропроцессором он может делать только то, что ему сказали.
у меня была такая же проблема на Ubuntu (
error: possibly undefined macro: AC_MSG_ERROR) но ответы выше не работали для меня. Я нашел решение здесьчто получилось:
$ LANG=C LC_CTYPE=C ./autogen.sh
есть две возможные причины этой проблемы:
не устанавливал aclocal.
решение:установите libtool
- для ubuntu:
sudo apt-get install libtool- для centos:
sudo yum install libtoolпуть к LIBTOOL.М4-это ошибка.
решение:
- использовать
aclocal --print-ac-dirдля проверки текущего пути к aclocal.(Обычно это должно быть "/ usr / share / aclocal " или "/usr / share / aclocal")- затем проверьте, есть ли *.файлы m4.
- если нет, то cp соответствует *.M4 файлы по этому пути.(Может быть
cp /usr/share/aclocal/*.m4 /usr/local/share/aclocal/илиcp /usr/local/share/aclocal/*.m4 /usr/share/aclocal/)надеюсь, что это помогает
У меня была такая же проблема на RHEL7. 5 с otto-de / libvmod-uuid
Это было исправлено путем установки пакетов "autoconf-archive"
У меня была такая же проблема с портом Macports "openocd" (локально измененный файл порта для использования репозитория git) на недавно установленной машине.
постоянное исправление легко, определите зависимость от pkgconfig в файле порта: depends_lib-добавить порт: pkgconfig
Comments