GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
PATCHELF(1) User Manuals PATCHELF(1)

patchelf - Modify ELF files

patchelf OPTION FILE ...

PatchELF is a simple utility for modifying existing ELF executables and libraries. It can change the dynamic loader ("ELF interpreter") of executables and change the RPATH of executables and libraries.

The single option given operates on each FILE, editing in place.

Any option taking a string argument can also take a file by prefixing the argument with the @ symbol. See EXAMPLES

--page-size SIZE
Uses the given page size instead of the default.

--set-interpreter INTERPRETER
Change the dynamic loader ("ELF interpreter") of executable given to INTERPRETER.

--print-interpreter
Prints the ELF interpreter of the executable.

--print-soname
Prints DT_SONAME entry of .dynamic section. Raises an error if DT_SONAME doesn't exist.

--set-soname SONAME
Sets DT_SONAME entry of a library to SONAME.

--set-rpath RUNPATH
Change the DT_RUNPATH of the executable or library to RUNPATH.

--add-rpath RUNPATH
Add RUNPATH to the existing DT_RUNPATH of the executable or library.

--remove-rpath
Removes the DT_RPATH or DT_RUNPATH entry of the executable or library.

--shrink-rpath
Remove from the DT_RUNPATH or DT_RPATH all directories that do not contain a library referenced by DT_NEEDED fields of the executable or library.

For instance, if an executable references one library libfoo.so, has an RPATH "/lib:/usr/lib:/foo/lib", and libfoo.so can only be found in /foo/lib, then the new RPATH will be "/foo/lib".

--allowed-rpath-prefixes PREFIXES
Combined with the "--shrink-rpath" option, this can be used for further rpath tuning. For instance, if an executable has an RPATH "/tmp/build-foo/.libs:/foo/lib", it is probably desirable to keep the "/foo/lib" reference instead of the "/tmp" entry.

--print-rpath
Prints the DT_RUNPATH or DT_RPATH for an executable or library.

--force-rpath
Forces the use of the obsolete DT_RPATH in the file instead of DT_RUNPATH. By default DT_RPATH is converted to DT_RUNPATH.

--add-needed LIBRARY
Adds a declared dependency on a dynamic library (DT_NEEDED). This option can be given multiple times.

--replace-needed LIB_ORIG LIB_NEW
Replaces a declared dependency on a dynamic library with another one (DT_NEEDED). This option can be given multiple times.

--remove-needed LIBRARY
Removes a declared dependency on LIBRARY (DT_NEEDED entry). This option can be given multiple times.

--no-default-lib
Marks the object so that the search for dependencies of this object will ignore any default library search paths.

--output FILE
Set the output file name. If not specified, the input will be modified in place.

--debug
Prints details of the changes made to the input file.

--version
Shows the version of patchelf.

To use the contents on an external file as a parameter:

$ patchelf a.out --add-rpath @/tmp/generated-rpath.bin

To change the RPATH of a binary. Note that $ORIGIN is a special symbol used by the loader, so must be quoted.

patchelf --set-rpath '$ORIGIN/../lib64' a.out

Eelco Dolstra <e.dolstra@tudelft.nl>

elf(5), ld.so(8)

JUNE 2010 PATCHELF

Search for    or go to Top of page |  Section 1 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.