CMake RPATH handling
From KitwarePublic
Jump to navigationJump to search
CMake gives the user complete control over the RPATH of executables and libraries created using CMake.
What is RPATH ?
If an executable foo links to the shared library bar, the library bar has to be found and loaded when the executable foo is executed. This is the job of the linker, under Linux this is usually ld.so. The linker searches a set of directories for the library bar, which will under most UNIXes have the name "libbar.so". The linker will search the libraries in the following directories in the given order:
- RPATH - a list of directories which is linked into the executable, supported on most UNIX systems
- LD_LIBRARY_PATH - an environment variable which holds a list of directories
- RUNPATH - same as RPATH, but searched after LD_LIBRARY_PATH, supported only on some newer UNIX systems, e.g. on most current Linux systems
- /etc/ld.so.conf - configuration file for ld.so which lists additional library directories
- builtin directories - basically /lib and /usr/lib