Important
The official ezld repository is https://github.com/Alessandro-Salerno/ezld. If you're seeing this on any other website (like github-zh.com), switch to the official repository! I have never uploaded this project to other source hosting services.
A tiny, simple, and portable static Linker for the ELF format.
- Command-line interface for direct usage
- No OS-specific libc dependency (portable across platforms)
- Supports section alignment, entry point overrides, and more
- Usable as a library or standalone binary
- Designed with simplicity and clarity in mind
ezld by Alessandro Salerno
The EZ ELF Linker
Usage: ezld [<command>] [<options>] [<input files>]
COMMANDS:
-h, --help Show this menu
-v, --version Show version information
OPTIONS:
-e, --entry-sym Set the entry point symbol (default: '_start')
-s, --section Set base virtual address for section (e.g., -s .text=0x4000)
-a, --align Set PT_LOAD segment alignment (e.g., -a 0x1000)
-o, --output Set output file path (default: 'a.out')
Use the included Makefile to build:
make debug # Build with debug info, sanitizers, -O0
make release # Build optimized release version
make library # Build as a static libraryInstall with tarman from the tarman user repository:
tarman install -r ezld💡 ezld is platform-agnostic.
Though it links ELF binaries, it's designed to run on any host, including:
- 🪟 Windows
- 🐧 Linux
- 🍎 macOS
- 🌈 SalernOS
ezld avoids non-standard libc functions, improving portability and making it suitable for low-level projects, OS userspace testing, or educational purposes.
ezld was created as part of the rarsjs project. It’s meant to be a learning tool and experimentation ground for understanding the inner workings of static linking and ELF formats.
This project includes code from:
ezld is licensed under the MIT License. Third-party code may have distinct copyright.