The Network Security. Org

RSS Feed

Dynamic linking in Linux and Windows, part one

August 9th, 2006 · No Comments


This article discusses the shared libraries concept in both Windows and Linux, and offers a bt_left.pngwalk-through through various data structures to explain how dynamic linking is done in these operating systems. The paper will be useful for developers interested in the security implications and the relative speed of dynamic linking, and assumes some prior cursory knowledge with dynamic linking.

Part one introduces the concepts for both Linux and Windows, but will focus primarily on Linux. Next time in part two, we’ll discuss how it works in Windows and then continue to compare the two environments.

Static Libraries vs. Shared Libraries
A library is a collection of sub-programs which allow code to be shared and changed in a modular fashion. Executables and libraries make references to each other through a process known as linking which is done by a linker.

In the most basic sense, libraries can be divided into two categories: static libraries and shared libraries.

Static libraries are a collection of object files, and conventionally they end with a ".a" suffix in UNIX variants, and ".lib" in Windows. When a program is linked against a static library, the machine code from the object files for any external functions used by the program is copied from the library into the final executable.

In contrast to static libraries, with shared libraries the library code is not bound to the executable at link time. Depending on when and how the address bindings are done, the linking process can be categorized into prelinking, load time linking, implicit run-time linking and explicit run-time linking. Dynamic linking in Linux and Windows, part one

From around the Web

  • Advertisments