If you want to compile a source file including the gnutls/gnutls.h header file, you must make sure that the compiler can find it in the directory hierarchy. This is accomplished by adding the path to the directory in which the header file is located to the compilers include file search path (via the -I option).
However, the path to the include file is determined at the time the
source is configured. To solve this problem, the library uses the
pkg-config that knows the path to the
include file and other configuration options. The options that need
to be added to the compiler invocation at compile time are output by
the --cflags option to
pkg-config gnutls. The
following example shows how it can be used at the command line:
gcc -c foo.c `pkg-config gnutls --cflags`
Adding the output of ‘pkg-config gnutls --cflags’ to the compilers command line will ensure that the compiler can find the gnutls/gnutls.h header file.
A similar problem occurs when linking the program with the library.
Again, the compiler has to find the library files. For this to work,
the path to the library files has to be added to the library search
path (via the -L option). For this, the option
pkg-config gnutls can be used. For
convenience, this option also outputs all other options that are
required to link the program with the library (for instance, the
‘-ltasn1’ option). The example shows how to link foo.o
with the library to a program
gcc -o foo foo.o `pkg-config gnutls --libs`
Of course you can also combine both examples to a single command by
specifying both options to
gcc -o foo foo.c `pkg-config gnutls --cflags --libs`
When a program uses the GNU autoconf system, then the following line or similar can be used to detect the presence of GnuTLS.
PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 3.3.0]) AC_SUBST([LIBGNUTLS_CFLAGS]) AC_SUBST([LIBGNUTLS_LIBS])