Suppose our program relies on an external library. We want to be able
to check for this when
configure is run, and print an error
message if the library is not installed.
The following shows how you can do this by amending configure.ac. We have used the GMP library as an example.
AC_INIT([hello], [1.0]) AM_INIT_AUTOMAKE AC_PROG_CC AC_CHECK_LIB([gmp], [__gmpz_add]) if test "x$ac_cv_lib_gmp___gmpz_add" = xno; then AC_MSG_ERROR([libgmp is required]) fi AC_CONFIG_FILES([Makefile]) AC_OUTPUT
The first argument to
AC_CHECK_LIB is the name of the library to
look for, and the second a symbol of a function appearing in that
In this case the result of the check is available in the
ac_cv_lib_gmp___gmpz_add shell variable. Shell variables holding
the results of tests are known as cache variables. (The
‘ac_cv_’ prefix stands for “Autoconf cache variable”.)
This example shows that shell script code can appear in
The conditional appearing after
AC_CHECK_LIB checks the
result of the library check and, if the library was not found, the
AC_MSG_ERROR macro stops the configure script and prints an error
We needed to use the ‘test’ shell command in this example instead of the ‘[’ command because ‘[’ has a special meaning as a quote character. We prefixed the letter ‘x’ to the strings being compared to account for the case that the variable expands to an empty string.