PKG_CHECK_MODULES打破了solaris

时间:2011-07-20 07:29:53

标签: solaris autotools autoconf automake

我的项目需要依赖libxml2 am使用autotools检查依赖关系&安装相同。我声明在configure.ac

中使用以下宏的依赖性
echo -n "checking if libxml2 is present... "

PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6.19],
              [echo "yes (features requiring libxml2 enabled)"  AC_DEFINE(HAVE_LIB_XML, 1,     [define if libxml2 is present])],
              [echo "no"] )

宏在GNU/Linux中可以正常工作。

但不知怎的,它在Solaris失败并出现以下错误

checking if libxml2 is present... ./configure: line 11586: syntax error near unexpected token `LIBXML2,'
./configure: line 11586: `PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= 2.6.19,'

用Google搜索解决方案,其中大多数人都抱怨pkg-config没有安装。但是在我的测试机器中实际安装了它,通过执行以下命令来检查它。

bash-3.00# pkg-config libxml-2.0 --modversion
2.6.23

欢迎提出一些建议。

1 个答案:

答案 0 :(得分:8)

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 m4autoconf以及./configure