我正在尝试构建iptables,这需要使用automake作为构建步骤的一部分。当我在我的机器上工作时,一位同事遇到了麻烦。由于automake错误导致配置失败,如下所示:
./configure: line 12080: syntax error near unexpected token `libnfnetlink,'
./configure: line 12080: `PKG_CHECK_MODULES(libnfnetlink, libnfnetlink >= 1.0,'
(automake无法解析PKG_CHECK_MODULES macro
...)PKG_CHECK_MODULES
位于pkg.m4中。我们在顶级makefile aclocal --print-ac-dir
中插入了一行。这告诉我们它指向pkg.m4所在的目录,以及宏似乎正确定义的位置。我们的系统之间的巨大差异似乎是我有自动化1.11.1,他有automake (GNU automake) 1.11.6 (RN 10.10.2 (sic), assuming 1.10.2)
(我不确定RN指的是什么......)。他还有一个更新版本的autoconf(我有2.66,他有2.69)。我注意到在我的同事的pkg.m4文件版本中,PKG_CHECK_MODULES文件中间有一个dnl,我似乎没有,但是,它在右括号{{1}之前所以我假设它没有做任何事情。有谁知道可能导致此错误的原因,或者我接下来会尝试什么?
(注意:我不想降级automake,因为这也必须适用于第三方构建机器。)
谢谢, 约翰
修改
在configure.ac中,您有以下行:
[] dnl ]
问题是AM_CONDITIONAL([ENABLE_LIBIPQ], [test "$enable_libipq" = "yes"])
PKG_CHECK_MODULES([libnfnetlink], [libnfnetlink >= 1.0],
[nfnetlink=1], [nfnetlink=0])
AM_CONDITIONAL([HAVE_LIBNFNETLINK], [test "$nfnetlink" = 1])
宏没有得到解决,所以PKG_CHECK_MODULES最终会出现在配置脚本本身(我想那时是autoconf,而不是自动生成 - 我的坏 - 还是新的所有这一切)。因此,在配置中,您最终得到一行:
PKG_CHECK_MODULES
哪个bash不理解,并视为语法错误。
答案 0 :(得分:0)
我的编译环境也有类似的问题。
就我而言,它有助于将 pkg-config
降级为 version 0.24
,并将 libtool
降级为 version 2.4.2