| || |
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.
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:
| || |
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.