GNU Info

Info Node: (autoconf.info)Examining Libraries

(autoconf.info)Examining Libraries


Next: Run Time Prev: Examining Syntax Up: Writing Tests
Enter node , (file) or (file)node

Examining Libraries
===================

   To check for a library, a function, or a global variable, Autoconf
`configure' scripts try to compile and link a small program that uses
it.  This is unlike Metaconfig, which by default uses `nm' or `ar' on
the C library to try to figure out which functions are available.
Trying to link with the function is usually a more reliable approach
because it avoids dealing with the variations in the options and output
formats of `nm' and `ar' and in the location of the standard libraries.
It also allows configuring for cross-compilation or checking a
function's runtime behavior if needed.  On the other hand, it can be
slower than scanning the libraries once.

   A few systems have linkers that do not return a failure exit status
when there are unresolved functions in the link.  This bug makes the
configuration scripts produced by Autoconf unusable on those systems.
However, some of them can be given options that make the exit status
correct.  This is a problem that Autoconf does not currently handle
automatically.  If users encounter this problem, they might be able to
solve it by setting `LDFLAGS' in the environment to pass whatever
options the linker needs (for example, `-Wl,-dn' on MIPS RISC/OS).

   `AC_TRY_LINK' is used to compile test programs to test for functions
and global variables.  It is also used by `AC_CHECK_LIB' to check for
libraries (Note: Libraries), by adding the library being checked for
to `LIBS' temporarily and trying to link a small program.

 - Macro: AC_TRY_LINK (INCLUDES, FUNCTION-BODY, [ACTION-IF-FOUND [,
          ACTION-IF-NOT-FOUND]])
     Depending on the current language (Note: Language Choice),
     create a test program to see whether a function whose body
     consists of FUNCTION-BODY can be compiled and linked.

     For C and C++, INCLUDES is any `#include' statements needed by the
     code in FUNCTION-BODY (INCLUDES will be ignored if the currently
     selected language is Fortran 77).  This macro also uses `CFLAGS'
     or `CXXFLAGS' if either C or C++ is the currently selected
     language, as well as `CPPFLAGS', when compiling.  If Fortran 77 is
     the currently selected language then `FFLAGS' will be used when
     compiling.  However, both `LDFLAGS' and `LIBS' will be used during
     linking in all cases.

     If the file compiles and links successfully, run shell commands
     ACTION-IF-FOUND, otherwise run ACTION-IF-NOT-FOUND.

 - Macro: AC_TRY_LINK_FUNC (FUNCTION, [ACTION-IF-FOUND [,
          ACTION-IF-NOT-FOUND]])
     Depending on the current language (Note: Language Choice),
     create a test program to see whether a program whose body consists
     of a prototype of and a call to FUNCTION can be compiled and
     linked.

     If the file compiles and links successfully, run shell commands
     ACTION-IF-FOUND, otherwise run ACTION-IF-NOT-FOUND.

 - Macro: AC_TRY_LINK_FUNC (FUNCTION, [ACTION-IF-FOUND [,
          ACTION-IF-NOT-FOUND]])
     Attempt to compile and link a small program that links with
     FUNCTION.  If the file compiles and links successfully, run shell
     commands ACTION-IF-FOUND, otherwise run ACTION-IF-NOT-FOUND.

 - Macro: AC_COMPILE_CHECK (ECHO-TEXT, INCLUDES, FUNCTION-BODY,
          ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND])
     This is an obsolete version of `AC_TRY_LINK', with the addition
     that it prints `checking for ECHO-TEXT' to the standard output
     first, if ECHO-TEXT is non-empty.  Use `AC_MSG_CHECKING' and
     `AC_MSG_RESULT' instead to print messages (Note: Printing
     Messages).


automatically generated by info2www version 1.2.2.9