# nixos/patchelf

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/nixos-patchelf).**

_How this analysis was created: the description and tags below were written by an AI model that read this project's README and public documentation pages; stars, license and language come straight from the GitHub API. The model does not read the source code._

4,211 stars · 533 forks · C · GPL-3.0

## Links

- GitHub: https://github.com/NixOS/patchelf
- awesome-repositories: https://awesome-repositories.com/repository/nixos-patchelf.md

## Description

patchelf is a suite of administrative utilities for modifying the dynamic linker and runtime search paths within ELF executables. It functions as an ELF binary modifier and dependency manager, allowing for the editing of interpreter paths and the management of shared library dependencies.

The project provides specialized tools for updating the interpreter path to specify a different dynamic loader at runtime and an RPATH management tool for adding or removing library search paths within binary headers. It also includes capabilities for modifying the internal name identifiers of dynamic libraries and managing the needed entries of a binary to add, remove, or replace declared dependencies.

These utilities cover a broad range of binary modification tasks, including updating the dynamic section and program headers, expanding string tables, and performing in-place binary rewriting. The toolset also supports dependency pre-resolution to reduce file system searches during application startup.

## Tags

### Operating Systems & Systems Programming

- [Interpreter Path Modifications](https://awesome-repositories.com/f/operating-systems-systems-programming/interpreter-path-modifications.md) — Updates the interpreter path in an executable to point to a specific dynamic linker. ([source](https://github.com/nixos/patchelf#readme))
- [ELF Binary Modifications](https://awesome-repositories.com/f/operating-systems-systems-programming/elf-binary-modifications.md) — Changes the dynamic linker or runtime search paths of an executable to fix library loading errors.
- [ELF Binary Modifiers](https://awesome-repositories.com/f/operating-systems-systems-programming/elf-binary-modifiers.md) — Updates the dynamic linker and runtime search paths within ELF executables.
- [ELF Binary Parsing](https://awesome-repositories.com/f/operating-systems-systems-programming/elf-binary-parsing.md) — Parses the structure of ELF executables and shared object files to locate the dynamic section.
- [ELF Dependency List Modifications](https://awesome-repositories.com/f/operating-systems-systems-programming/elf-dependency-list-modifications.md) — Provides capabilities to add or remove shared library identifiers from the needed entries of an ELF binary.
- [ELF Dependency Managers](https://awesome-repositories.com/f/operating-systems-systems-programming/elf-dependency-managers.md) — Modifies the shared library dependencies and internal name identifiers of dynamic libraries.
- [RPATH Management Tools](https://awesome-repositories.com/f/operating-systems-systems-programming/rpath-management-tools.md) — Adds or removes library search paths within the binary headers of ELF files.
- [Binary Offset Recalculations](https://awesome-repositories.com/f/operating-systems-systems-programming/binary-offset-recalculations.md) — Adjusts the addresses of internal references when the size of the dynamic section or string table changes.
- [ELF String Table Expansions](https://awesome-repositories.com/f/operating-systems-systems-programming/elf-string-table-expansions.md) — Appends new path strings to the end of the binary and updates references to accommodate longer directory paths.
- [SONAME Modifications](https://awesome-repositories.com/f/operating-systems-systems-programming/soname-modifications.md) — Updates the internal name identifier of a dynamic library to change how the linker identifies it. ([source](https://github.com/nixos/patchelf#readme))

### Development Tools & Productivity

- [RPATH Manipulators](https://awesome-repositories.com/f/development-tools-productivity/configuration-search-paths/library-search-paths/rpath-manipulators.md) — Adds, removes, or changes the runtime search paths for shared libraries within binary headers. ([source](https://github.com/nixos/patchelf#readme))
- [Dynamic Linker Editors](https://awesome-repositories.com/f/development-tools-productivity/dynamic-linker-editors.md) — Provides a utility to change the interpreter path that specifies which loader runs an executable at runtime.
- [In-Place Binary Header Rewriting](https://awesome-repositories.com/f/development-tools-productivity/in-place-binary-header-rewriting.md) — Updates specific offsets within the executable file to change metadata without altering the actual machine code.

### Programming Languages & Runtimes

- [ELF Dynamic Section Manipulators](https://awesome-repositories.com/f/programming-languages-runtimes/import-path-resolution/runtime-search-path-manipulation/elf-dynamic-section-manipulators.md) — Modifies program headers and dynamic tags to update the interpreter path and library search paths.
- [Custom Loader Integrations](https://awesome-repositories.com/f/programming-languages-runtimes/custom-loader-integrations.md) — Adjusts the interpreter path in a binary to use a specific dynamic loader provided by a custom environment.

### Software Engineering & Architecture

- [Library Dependency Managers](https://awesome-repositories.com/f/software-engineering-architecture/library-compatibility-managers/library-dependency-managers.md) — Provides utilities for adding, removing, or replacing declared dependencies in the needed entries of a binary. ([source](https://github.com/nixos/patchelf#readme))

### DevOps & Infrastructure

- [Portable Binaries](https://awesome-repositories.com/f/devops-infrastructure/portable-binaries.md) — Modifies the RPATH of compiled binaries so they can run on different systems without global library installations.
