I want to start with a short conclusion: if you're seriously interested in compilation and operating systems, this an interesting book on a topic that isn't frequently covered in books or tutorials. If you have any intentions of implementing low level system software that performs the tasks of, or at least cooperates with, linkers and loaders, this book is absolutely essential. It comes with a handy project that implements a simple linker and loader from scratch. Now, that done, I have a very strong urge of making fun of the back cover of the book. You know what I'm talking about - those shiny, marketing-hype-full pages the book's publisher places hoping to increase the book's sales. Here's the "features" section:
  • Covers dynamic linking in Windows, UNIX, Linux, BeOS and other operating systems
  • Explains the Java linking model and how it figures in network applets and extensible Java code
  • Helps you write more elegant and effective code, and build applications that compile, load, and run more efficiently
  • Includes a linker construction project written in Perl, with project files available for download
The last item has a fat "WEB enhanced" image next to it. Now, each time I see this I just can't help thinking of grandpa Joe, roaming his town's Barnes & Noble looking for a Christmas present for his geeky grandson Joe Jr. Jr., and picking this book because of such a sweet selection of totally irrelevant buzzwords. This book is NOT about all those operating systems, it's certainly NOT about Java, it will NOT help you write better code. What it is about is the nitty gritty low-level details of linkers and loaders, the almost unknown and non-glamorous blue-collar workers that are nevertheless essential for any compilation and program load. Yes, all those buzzwords are mentioned in the book (about once or twice at most), but it's not what the book is about. There, Morgan-Kaufman publishers, I've taken this off my chest. Luckily, John Levine is a better writer than your salespeople.