WHAT IF GETOPT_LONG IS NOT THERE? If you use gengetopt to generate C functions for parsing command line arguments you have to know that these generated functions use getopt_long to actually read the command line and parsing it. This function is typically part of the standard C library, but some libraries may not include it. But this is not a problem: we provide C files that actually implement getopt_long function: getopt.c getopt1.c and getopt.h. You'll find these files in the /share/gengetopt directory where is the one you specified during compilation. If no prefix had been specified, /usr/local is the default. If you downloaded gengetopt in binary form prefix will probably be /usr/local or /usr. You can simply compile these files and link them to the executable of you program. But if you use automake and autoconf here's a more elegant solution; keep on reading ... This a little explanation on how discovering if getopt_long is in the standard C library of your C compiler and what to do if it is not there. This technique can be used if you use automake and autoconf to build your package's configure script. In configure.in add the following lines: dnl check for getopt in standard library AC_SUBST(LIBOBJS) AC_CHECK_FUNCS(getopt_long , , [LIBOBJS="$LIBOBJS getopt.o getopt1.o"] ) This macro checks if getopt_long function is in C library; if it is not there it adds getopt.o and getopt1.o to the objects files that will be linked to your executable (LIBOBJS). Notice: the AC_SUBST is not necessary if you have already used a macro such as AC_REPLACE_FUNC. Then in Makefile.am of your source directory you have to add the contents of LIBOBJS to the LDADD of the program that has to use getopt_long; e.g. if the program 'foo' has to use getopt_long, you have to add the following line foo_LDADD = @LIBOBJS@ Now these files will be compiled and linked to your program only if necessary. Moreover you have to add getopt.c getopt1.c and getopt.h to your distribution. Note that it is not necessary to put these file names among the foo_SOURCES contents), but you have to add getopt.h to EXTRA_DIST: EXTRA_DIST = getopt.h You may want to take a look at gengetopt's configure.in and src/Makefile.am: they both use the techniques described here. I hope you find this document useful :-) Happy Coding! Lorenzo Bettini