This is probably not a book for everyone, but if you're interested in the gory details of linking and loading or you need to write or work closely with a linker then it would be well worth a look.
With the advent of cheap RAM and plentiful virtual memory, developers do not generally need to pay the attention to linking and loading that was required when working out how to fit a program in memory was a major problem.
In fact, many probably view linking as a minor job that happens at the end, after the all-important compiler has finished working; it probably doesn't even get noticed unless it is unable to resolve a symbol used by the programmer.
This book sets out to rectify that by covering in detail the processes involved in linking a program together and then loading and executing it. Along the way it examines such issues as storage allocation, symbol table management, relocation, overlays and static and shared libraries before finishing with a chapter on advanced issues such as link time optimisation and code generation.
The writing style is generally clear as is the presentation of the material covered, with a number of exercises at the end of each chapter; including a number based around the construction of a simple linker written in Perl.
Numerous examples are included from a number of system architectures and operating systems, which range from the bizarre to the common and the old to the new - the last chapter even includes a discussion of Java linking.
This is probably not a book for everyone, but if you're interested in the gory details of linking and loading or you need to write or work closely with a linker then it would be well worth a look.