Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
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 ex-
       ecutables 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.

	      Prints the ELF interpreter of the	executable.

	      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  li-

	      Removes  the  DT_RPATH  or DT_RUNPATH entry of the executable or

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

	      For instance, if an executable references	one library,
	      has an RPATH "/lib:/usr/lib:/foo/lib", and 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.

	      Prints the DT_RUNPATH or DT_RPATH	for an executable or library.

	      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.

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

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

	      Prints details of	the changes made to the	input file.

	      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 <>


PATCHELF			   JUNE	2010			   PATCHELF(1)


Want to link to this manual page? Use this URL:

home | help