-
The Linux Programming Interface by Michael Kerrisk: Chapter-41 and Chapter-42 will give you a general idea about Linking, shared libraries, PIC, Dynamic Linking etc. from a programmer's perspective.
-
Computer SystemsA Programmer’s Perspective: Chapter-7 covers above mentioned topic more deeply. Covers some basic relocation algorithms/techniques.
-
Linking: A good summery on ELF Lining, Loading and creating dynamic shared libraries.
-
Shared libraries with GCC on Linux: Nice article on creating and using shared libraries with example.
-
Shared Libraries: Understanding Dynamic Loading: Article on creating an managing shared libraries.
-
ELF Format Specification: ELF format specification. Describes ELF file structure. Nicely written. Before reading this you should have a general idea of linking, relocation, loading, virtual memory etc.
-
Principles of Operating Systems by UCI: Lecture-04 covers linking and loading concepts. I would suggest previous lectures too if you are new to assembly programming. Homework-02 is on implementing a simple loader. This helpful to grasp the ELF file structure and basic loading concept.
-
Load-time relocation of shared libraries: An article covering details of load time relocation in shared library in x86 architecture.
-
Position Independent Code (PIC) in shared libraries: An article covering details of PIC in X86 architecture. In depth discussion on topics like Global Offset Table and Procedure Linkage Table etc.
-
Position Independent Code (PIC) in shared libraries on x64: Covers PIC in X86_64 architecture.
-
BOOK Linking and Loading by John R. Levine: Bible of Linking and Loading.
-
PAPER The Inside Story on Shared Libraries and Dynamic Linking: A really good indepth overview on shared libraries and dynamic linking.
-
PAPER How To Write Shared Libraries: A paper on writing shared libraries. Describes ELF internals in details.
-
How programs get run: A series of two articles explainig how programs run in the linux kernel with
execve()system call. Part 1 and Part 2 -
A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux : A tutorial on making a minimal ELF binary from scratch.
-
Linux Internals ~ Dynamic Linking Wizardry: Article on how dynamic linking works in Linux.
-
ELF: symbol lookup via DT_HASH: Description of .hash section and how it works in dynamic linking.
-
ELF: better symbol lookup via DT_GNU_HASH: Description of .gnu.hash section and how it works in dynamic linking.
-
Strong and Weak Symbols in GCC: Describes strong and weak symbols with examples.
-
The 101 of ELF files on Linux: Understanding and Analysis: ELF binary structure and tools for analysis.
Last active
November 16, 2025 11:05
-
-
Save aagontuk/871f2e8af05aaf7580f0e31fb3aa7c8b to your computer and use it in GitHub Desktop.
Linking and loading reading list
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment