Синтаксическая ошибка PKG_CHECK_MODULES рядом с luajit

Я новичок в GNU autotools. В моем проекте, когда я пытаюсь ./configure, возникает следующая ошибка:

./configure: line 9852: syntax error near unexpected token `luajit,'
./configure: line 9852: `    PKG_CHECK_MODULES(luajit, luajit,LLUAJIT="yes",LLUAJIT="no")'

В Configure.in:

 PKG_CHECK_MODULES(luajit, luajit,LLUAJIT="yes",LLUAJIT="no")
    if test "x$LLUAJIT" = "xyes"; then
        CONFIGFLAGS="$CONFIGFLAGS -DHAVE_LIBLUAJIT"
        LUA_CFLAGS="$luajit_CFLAGS"
        LUA_LIBS="$luajit_LIBS"
        AC_SUBST(LUA_CFLAGS)
        AC_SUBST(LUA_LIBS)
        if test "x$macos" != "xno"; then
            LDFLAGS="${LDFLAGS} -pagezero_size 10000 -image_base 100000000"
        fi

    else
        echo
        echo "   ERROR!  LuaJIT library not found. For better performance, go get it from"
        echo "   http://www.luajit.org/."
        AC_MSG_ERROR("Fatal!")
    fi

Кажется, autoconf (возможно) не может найти макрос PKG_CHECK_MODULES. Я искал в Интернете решение и обнаружил, что это связано с тем, что libtool не установлен. Я переустановил libtool, но ошибка осталась прежней.

Надеюсь, что кто-то осознает проблему и найдет для нее быстрое решение. Будем признательны за любую помощь.


person Prabhakar    schedule 16.04.2016    source источник


Ответы (3)


Макрос PKG_CHECK_MODULES определен в файле pkg.m4, а pkg.m4 является частью пакета pkgconfig. Поэтому, чтобы использовать этот макрос, убедитесь, что pkgconfig установлен в вашей системе, а pkg.m4 находится в нужном месте, в большинстве систем он находится по адресу:

/usr/share/aclocal/pkg.m4

В сценарии конфигурации включите libtool и добавьте каталог макросов:

LT_INIT
AC_CONFIG_MACRO_DIRS([m4])
person fluter    schedule 16.04.2016
comment
Пожалуйста, опубликуйте весь файл configure.ac. - person fluter; 16.04.2016
comment
В вашем скрипте конфигурации отсутствуют две конфигурации, см. обновленный ответ. - person fluter; 16.04.2016

Для тех, кто оказался здесь в поисках решения, у меня сработало следующее:

PKG_CHECK_MODULES ломается в Solaris

Макрос PKG_CHECK_MODULES, похоже, не раскрывается должным образом. Когда вы установили pkg-config, он установил pkg.m4 (где-то вроде /usr/share/aclocal)? Если это так, попробуйте снова запустить aclocal (возможно, с -I m4, если у вас есть собственный код m4 в подкаталоге m4), а затем запустите autoconf.

Если это не сработает и pkg.m4 был установлен, попробуйте запустить autoreconf -f (и, возможно, autoreconf -i -f).

Если это не сработает, вам нужно будет скопировать pkg.m4 в каталог для вашего пакета. Обычно это подкаталог m4. Установите ACLOCAL_AMFLAGS = -I m4 (или ACLOCAL_AMFLAGS = -I m4 --install) в Makefile.am (если вы используете automake) и AC_CONFIG_MACRO_DIR([m4]) в configure.ac. Затем запустите aclocal -I m4, autoconf и ./configure.

person Prabhakar    schedule 16.04.2016
comment
Просто хотел добавить: это может произойти, если autogen.sh не включен (что означает, что после новой проверки уже есть скрипт ./configure). Сценарий автогена обычно представляет собой просто autoreconf -fiv или что-то в этом роде. Спасибо за помощь! - person user318904; 14.11.2020

В моем случае я добавил файл conf перед установкой libtool, поэтому вам нужно снова запустить autoreconf -i -f после установки libtool

person Divyesh Govardhanan    schedule 28.05.2019