|
25. Using GNU Autotools with Cygnus Cygwin
It is possible to use the GNU Autotools to build software packages on
Windows. Since the tools were developed on Unix, it is easier to get
them to work using Cygnus Solutions' Cygwin distribution which provides
a POSIX wrapper for the Win32 API, See section The Diversity of Unix Systems, but it is certainly
possible to run the tools within other Windows environments, notably
Colin Peters' Mingw32 and D.J. Delorie's DJGPP. These
development environments are freely available on the
Internet(56). Unlike Cygwin, these
other environments are designed for developing with the Win32
API directly and consequently they are not as useful for
porting Unix projects to Windows or writing code that works on both
Windows and Unix, see 15.3 Unix/Windows Portability for more details.
This chapter describes the process of using GNU Autotools with Cygwin,
although some of this advice also applies to employing some of the other
GNU based Windows development environments.
It is notable that the recent Cygwin ports of GCC and
binutils can produce binaries which will run with the
`cygwin1.dll' emulation layer, or linked against `CRTDLL.DLL',
the Windows native C RunTime Dynamic Link
Library depending on the needs of particular source code. Recent
versions(57) of the binutils
implement the PE-COFF binary format used by Windows, so by
specifying the `-mno-cygwin' compiler option to the Cygwin
compiler and using only the API from `CRTDLL.DLL', you
can build binaries which are independent of the `cygwin1.dll'
DLL. Such binaries will generally run faster, since they bypass
the POSIX emulation, and give easier access to Windows specific
things such as drive letters. Source code designed to be compiled this
way will not compile on Unix however, since it will be limited to the
Win32 API provided by `CRTDLL.DLL'.
After reading this chapter, you will be able to install and use
GNU Autotools natively under Windows using Cygnus Solutions' Cygwin
environment, both to develop your own packages with the aid of Cygwin,
and to compile, install, and to a certain degree port other peoples
packages for use with Cygwin. As a Unix package developer, you
will learn how to write your configury to be Windows friendly, and to be
aware of certain quirks of Windows which can affect the portability of
packages which need to work on Windows in addition to your Unix
development machine.
|