0

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

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

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

检查 /usr/local/include/liblogger/logger.h 的存在...否

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

检查 -l/usr/local/lib/liblogger.a 中的 log_init ... 否

即使命名文件确实存在。

我在其中检查标头和库的 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])]
   )

确实找到了文件。

谢谢。

4

1 回答 1

1

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

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

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

In fact, setting HEADERLOGGER to liblogger doesn't solve the problem, since (I don't know why), "/urs/local/include/liblogger" is not being searched for, returning

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

(Perhaps I'm forgetting some previous AC instruction for that).

The moral: the log files are there for a reason... :-S

于 2013-01-08T17:08:25.120 回答