This means, all too often, that the software you want was written for a slightly different system and that it has to be ported.
Problems can crop up at any stage in porting.
Special configuration is often required before you compile. The source code could call functions that you've never heard of. Some programs make assumptions about the hardware they're running on or the terminals they interact with. And you may even have trouble with the documentation, if it's in a format you're not used to. This book deals with the whole life cycle of porting, from setting up a source tree on your system to correcting platform differences and even testing the executable after it's built.