configure.ac:库和标头不可用且不存在

时间:2013-01-08 13:32:46

标签: autoconf

我在C中实现了一个日志库(我将其命名为liblogger),并使用Autotools进行编译和安装。据我所知,安装正确完成,因为标头和库本身(我当前捆绑到一个静态库中)安装在相应的目录中(/ usr / local / include / liblogger /用于标头和/ usr / local / lib for .a)。

现在我正在尝试将另一个工具与该库链接(使用Autotools编译和构建)。要检查日志库是否存在,我已按照here所述内容创建了configure.ac文件。但是生成的配置脚本说:

  

检查/usr/local/include/liblogger/logger.h可用性...否

     

检查/usr/local/include/liblogger/logger.h presence ... no

     

检查/usr/local/include/liblogger/logger.h ...否

     

在-l / usr / local / lib / liblogger.a中检查log_init ...没有

即使命名文件 DO 存在。

我检查头文件和库的configure.ac文件部分如下:

LIBLOGGER=/usr/local/lib
HEADERLOGGER=/usr/local/include/liblogger

AC_CHECK_HEADER([${HEADERLOGGER}/logger.h],
    [AC_DEFINE([HAVE_LOGGER_H], [1], [found logger.h])
    CFLAGS="$CFLAGS -I${HEADERLOGGER}"])

AC_CHECK_LIB([${LIBLOGGER}/liblogger.a],
    log_init, [found liblogger.a], [], [])

AC_SUBST(LIBLOGGER)

实际上,如果我尝试:

AC_CHECK_FILE(
   [${HEADERLOGGER}/logger.h],
   [AC_MSG_NOTICE([Found logger.h])],
   [AC_MSG_NOTICE([Didn't find logger.h])]
   )

确实找到该文件。

感谢。

1 个答案:

答案 0 :(得分:1)

问题不在于工具的configure.ac,而是在原始记录器库中。检查运行configure脚本时生成的 config.log 文件时,有一行说:

/usr/local/include/liblogger/logger.h:22:19: fatal error: types.h: No such file or directory

所以我实际上必须重新组织记录器库中的一些依赖项。

事实上,将HEADERLOGGER设置为liblogger并不能解决问题,因为(我不知道为什么),“/ urs / local / include / liblogger”未被搜索,返回

configure: error: Couldn't find liblogger/logger.h

(也许我忘记了以前的AC指令)。

道德:日志文件是有原因的......:-S