Home Explore Blog CI



man-pages

29th chunk of `ld.man`
584e6f30e77f2d8142a98902c04f5dec6a042add0a6fd8020000000100000faa
 command line.  It overrides -s and -S.

       -rpath=dir
           Add a directory to the runtime library search path.  This is used when linking an ELF executable with shared objects.  All -rpath arguments are concatenated and passed to the runtime linker,  which  uses  them  to
           locate shared objects at runtime.

           The  -rpath option is also used when locating shared objects which are needed by shared objects explicitly included in the link; see the description of the -rpath-link option.  Searching -rpath in this way is only
           supported by native linkers and cross linkers which have been configured with the --with-sysroot option.

           If -rpath is not used when linking an ELF executable, the contents of the environment variable "LD_RUN_PATH" will be used if it is defined.

           The -rpath option may also be used on SunOS.  By default, on SunOS, the linker will form a runtime search path out of all the -L options it is given.  If a -rpath option is used, the runtime search  path  will  be
           formed exclusively using the -rpath options, ignoring the -L options.  This can be useful when using gcc, which adds many -L options which may be on NFS mounted file systems.

           For compatibility with other ELF linkers, if the -R option is followed by a directory name, rather than a file name, it is treated as the -rpath option.

       -rpath-link=dir
           When using ELF or SunOS, one shared library may require another.  This happens when an "ld -shared" link includes a shared library as one of the input files.

           When  the  linker  encounters  such  a  dependency  when  doing a non‐shared, non‐relocatable link, it will automatically try to locate the required shared library and include it in the link, if it is not included
           explicitly.  In such a case, the -rpath-link option specifies the first set of directories to search.  The -rpath-link option may specify a sequence of  directory  names  either  by  specifying  a  list  of  names
           separated by colons, or by appearing multiple times.

           The  tokens  $ORIGIN  and  $LIB  can appear in these search directories.  They will be replaced by the full path to the directory containing the program or shared object in the case of $ORIGIN and either lib - for
           32-bit binaries - or lib64 - for 64-bit binaries - in the case of $LIB.

           The alternative form of these tokens - ${ORIGIN} and ${LIB} can also be used.  The token $PLATFORM is not supported.

           This option should be used with caution as it overrides the search path that may have been hard compiled into a shared library. In such a case it is possible to use unintentionally a different search path than the
           runtime linker would do.

           The linker uses the following search paths to locate required shared libraries:

           1.  Any directories specified by -rpath-link options.

           2.  Any directories specified by -rpath options.  The difference between -rpath and -rpath-link is that directories specified by -rpath options are included in the executable  and  used  at  runtime,  whereas  the
               -rpath-link option is only effective at link time. Searching -rpath in this way is only supported by native linkers and cross linkers which have been configured with the --with-sysroot option.

           3.  On an ELF system, for native linkers, if the -rpath and -rpath-link options were not used, search the contents of the environment variable "LD_RUN_PATH".

           4.  On SunOS, if the -rpath option was not used, search any directories specified using -L options.

           5.  For a native linker, search the contents of the environment variable "LD_LIBRARY_PATH".

           6.  For a native ELF linker, the directories in "DT_RUNPATH" or "DT_RPATH" of a shared library are searched for shared libraries needed by it. The "DT_RPATH" entries are ignored if "DT_RUNPATH" entries exist.

Title: LD (GNU Linker) Options: Runtime Library Search Path (-rpath) and Link-Time Search Path (-rpath-link)
Summary
This section describes the -rpath and -rpath-link options for the GNU linker. The -rpath option adds directories to the runtime library search path, used by the runtime linker to locate shared objects. The -rpath-link option specifies the directories to search for required shared libraries during linking, especially when one shared library depends on another. It also details the order in which the linker searches for shared libraries, including directories specified by -rpath-link, -rpath, environment variables like LD_RUN_PATH and LD_LIBRARY_PATH, and entries in shared library headers.