Back: Runtime Loading of DLLs
Forward: Cross Compilation
 
FastBack: Integration with Cygnus Cygwin
Up: Integration with Cygnus Cygwin
FastForward: Cross Compilation
Top: Autoconf, Automake, and Libtool
Contents: Table of Contents
Index: Index
About: About this document

25.5 Package Installation


Having successfully built a GNU Autotools managed package, a Systems Administrator will typically want to install the binaries, libraries and headers of the package. The GNU standards dictate that this be done with the command make install, and indeed Automake always generates `Makefile's which work in this way.

Unfortunately, this make install command is often thwarted by the peculiarities of Window's file system, and after an apparently successful installation, often the Windows installation conventions are not always satisfied, so the installed package may not work, even though the uninstalled build is fully operational.

There are a couple of issues which are worthy of discussion:

Prior to release 1.1.0, the Cygwin install program did not understand the .exe file extension. Fixing it was only a matter of writing a shell script wrapper for the install binary. Even though the current release is well behaved in this respect, .exe handling is still the cause of some complications. See section 25.3.3 Executable Filename Extensions.

If a package builds any DLLs with libtool, they are installed to $prefix/lib by default, since this is where shared libraries would be installed on Unix. Windows searches for DLLs at runtime using the user's executable search path ($PATH), which generally doesn't contain library paths. The first evidence you will see of this problem is when DLLs you have installed are not found by executables which depend on them, and there are two ways to fix it: The installed DLLs can be moved by hand from their installation directory into the equivalent executable destination, say from `/usr/local/lib' to `/usr/local/bin'; or better, you can extend your binary search path to include library directories. Adding the following to your `.profile' would be a good start:

 
PATH=$PATH:/usr/local/lib:/usr/lib:/lib

Once you are comfortable with setting your packages up like this, they will be relatively well behaved on Windows and Unix. Of course, you must also write portable code, see Writing Portable C with GNU Autotools.



This document was generated by Gary V. Vaughan on February, 8 2006 using texi2html