Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork515
A small utility to modify the dynamic linker and RPATH of ELF executables
License
NixOS/patchelf
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
PatchELF is a simple utility for modifying existing ELF executables andlibraries. In particular, it can do the following:
Change the dynamic loader ("ELF interpreter") of executables:
$patchelf --set-interpreter /lib/my-ld-linux.so.2 my-programChange the
RPATHof executables and libraries:$patchelf --set-rpath /opt/my-libs/lib:/other-libs my-programShrink the
RPATHof executables and libraries:$patchelf --shrink-rpath my-programThis removes from the
RPATHall directories that do not contain alibrary referenced byDT_NEEDEDfields of the executable or library.For instance, if an executable references one librarylibfoo.so, hasan RPATH/lib:/usr/lib:/foo/lib, andlibfoo.socan only be foundin/foo/lib, then the newRPATHwill be/foo/lib.In addition, the
--allowed-rpath-prefixesoption can be used forfurther rpath tuning. For instance, if an executable has anRPATH/tmp/build-foo/.libs:/foo/lib, it is probably desirable to keepthe/foo/libreference instead of the/tmpentry. To accomplishthat, use:$patchelf --shrink-rpath --allowed-rpath-prefixes /usr/lib:/foo/lib my-programRemove declared dependencies on dynamic libraries (
DT_NEEDEDentries):$patchelf --remove-needed libfoo.so.1 my-programThis option can be given multiple times.
Add a declared dependency on a dynamic library (
DT_NEEDED):$patchelf --add-needed libfoo.so.1 my-programThis option can be give multiple times.
Replace a declared dependency on a dynamic library with another one(
DT_NEEDED):$patchelf --replace-needed liboriginal.so.1 libreplacement.so.1 my-programThis option can be give multiple times.
Change
SONAMEof a dynamic library:$patchelf --set-soname libnewname.so.3.4.5 path/to/libmylibrary.so.1.2.3
./bootstrap.sh./configuremakemake checksudo make install
mkdir buildcd buildcmake .. -GNinjaninja allsudo ninja install
mkdir buildmeson configure buildcd buildninja allsudo ninja install
You can build with Nix in several ways.
Building via
nix buildwill produce the result in./result/bin/patchelf. If you would like to buildpatchelf withmusl trynix build .#patchelf-muslYou can launch a development environment with
nix developand follow the autotools steps above. If you would like to develop withmusl trynix develop .#musl
- Matrix:#patchelf:nixos.org
Copyright 2004-2019 Eelco Dolstraedolstra@gmail.com.
This program is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or (atyour option) any later version.
This program is distributed in the hope that it will be useful, butWITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNUGeneral Public License for more details.
You should have received a copy of the GNU General Public Licensealong with this program. If not, seehttp://www.gnu.org/licenses/.
About
A small utility to modify the dynamic linker and RPATH of ELF executables
Resources
License
Code of conduct
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.