Ginswich
Ginswich

Reputation: 270

configure.ac: Library and headers not usable and not present

I have implemented a logging library in C (which I've named liblogger), and used Autotools to compile and install it. As far as I can see, the installation is correctly done, since the headers and the library itself (which I currently bundle into a static library) are installed into the appropriate directories (/usr/local/include/liblogger/ for the headers and /usr/local/lib for the .a).

Now I am trying to link another tool with that library (compiled and built also using Autotools). To check for the logging library presence, I have followed what is said here to create the configure.ac file. But the resulting configure script says:

checking /usr/local/include/liblogger/logger.h usability... no

checking /usr/local/include/liblogger/logger.h presence... no

checking for /usr/local/include/liblogger/logger.h... no

checking for log_init in -l/usr/local/lib/liblogger.a... no

even though the named files DO exist.

The part of the configure.ac file where I check for the header and the library is as follows:

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)

Actually, if I try with:

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

it does find the file.

Thanks.

Upvotes: 1

Views: 2697

Answers (1)

Ginswich
Ginswich

Reputation: 270

The problem was not on the tool's configure.ac, but in the original logger library. When inspecting the config.log file generated when running the configure script, there was a line saying:

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

So I actually had to reorganize some dependencies in the logger library.

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

Upvotes: 2

Related Questions