Curious how a linker works with Rust programs on Unix-like systems? I’ll share my learnings on linking, rustc, symbol resolution and ELF.
In this talk, I’ll take you through my journey of exploring Rust’s linking process. We’ll dive into the rustc
compiler, understand symbol resolution, and dissect the ELF format. You’ll learn about Rust’s compilation pipeline, manual static linking and more.
Here’s what we’ll cover:
Basics of Linking: How linkers work with Rust Programs, making everything fit together like puzzle pieces.
Rust Compilation Stages: Understanding the step-by-step process of how Rust source files are turned into executable programs.
Symbol Resolution: How the linker matches variable and function names to their memory addresses.
ELF Format: What’s inside an ELF object file, and why it’s important.
Manual Linking: Trying to manually linking static Rust libraries with simple examples.
LLVM & Link Time Optimization: Cursory look at how Rust uses LLVM as a compiler backend, and lto