我在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])]
)
确实找到该文件。
感谢。
答案 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