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

FreeBSD Manual Pages

  
 
  

home | help
PATCHELF(1)			 User Manuals			   PATCHELF(1)

NAME
       patchelf	- Modify ELF files

SYNOPSIS
       patchelf	OPTION FILE ...

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

OPTIONS
       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  li-
	      brary.

       --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 exe-
	      cutable 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 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.

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

       --version
	      Shows the	version	of patchelf.

EXAMPLES
       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

AUTHOR
       Eelco Dolstra <e.dolstra@tudelft.nl>

SEE ALSO
       elf(5), ld.so(8)

PATCHELF			   JUNE	2010			   PATCHELF(1)

NAME | SYNOPSIS | DESCRIPTION | OPTIONS | EXAMPLES | AUTHOR | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=patchelf&sektion=1&manpath=FreeBSD+13.1-RELEASE+and+Ports>

home | help