Summary
Developing applications that work under multiple UNIX platforms requires an understanding of the underlying issues that affect the compilation and linking process. For nearly all situations, the problems relate to two distinct areas, the header files that support standard system and kernel functionality and the libraries used to support specific extensions and functionality. Hidden behind these differences are the complex issues of specific operating system limitations. For example, differences in the signals supported by different UNIX variants might cause problems.
Some of these differences can be alleviated by using tricks to get around the differences and issues. To simplify the header, library, and build environment issues, you can make use of the autotools/autoconf package produced by GNU. This uses a combination of known differences and a discovery script to determine the environment on a target during the build process, and then builds a suitable build script and header file to account for the platform-specific issues.
While autotools can simplify the build process, it is not designed to account for all of the differences between platforms. It can't, for example, account for missing functions, libraries, and core OS differences, but it will make a significant difference.

