dlsetlibpath(3C)dlsetlibpath(3C)NAMEdlsetlibpath() - set the dynamic search path used to locate shared
libraries
SYNOPSIS
[flag]... file... [library]...
Multithread Usage
This routine is thread-safe. Calls to affect all subsequent calls to
and on any thread.
DESCRIPTION
is one of a family of routines that give the user direct access to the
dynamic linking facilities (using the option on the compiler or command
line). sets the dynamic search path used by and to locate shared
libraries.
libpath is the dynamic search path. It is a list of one or more path
names separated by colons
When searching for a library, the dynamic loader uses search paths in
the following default order:
1. The dynamic search path specified in a call to
2. The environment variable.
3. The environment variable.
4. The embedded path of the calling module (executable program
or shared library) for libraries named in calls to or For
dependent libraries, the embedded path of the library that
named it as a dependent is used.
5. The standard library path.
6. The current working directory. (This is only for libraries
named in calls to and not their dependent libraries.)
(See dld.so(5) for additional information on search paths and options
that can change the order described above.)
Any combination of these paths may be disabled by setting flags to one
or more of the following flag values OR'ed together. If the following
value is set, the dynamic loader does not search the specified loca‐
tion:
Directories specified in the dynamic search path.
Directories specified in the environment variable.
Directories specified in the environment variable.
Directories specified in the embedded path.
Standard library directory.
Current working directory.
Multiple search paths can be disabled by OR'ing individual flags:
flags = RTLD_FLAG_DISABLE_STD_PATH | RTLD_FLAG_DISABLE_CWD_PATH
A single search path can be enabled by setting flags to the complement
of the flag value that disables that search path:
flags = ~RTLD_FLAG_DISABLE_DYNAMIC_PATH
EXAMPLES
The following example illustrates the use of to set the dynamic search
path and disable other search paths. For simplicity, error checking
has been omitted.
#include <dlfcn.h>
int main() {
void *handle;
int status;
int flags;
/* Set dynamic search path and disable the embedded
* path and the standard library directory.
*/
flags = RTLD_FLAG_DISABLE_EMBEDDED_PATH |
RTLD_FLAG_DISABLE_STD_PATH;
status = dlsetlibpath("/opt/lib:/opt/usr/lib", flags);
/* Call dlopen to load a library using the dynamic
* search path.
*/
handle = dlopen("mylib.so", RTLD_LAZY);
/* Remove the dynamic search path and reenable all
* disabled search paths.
*/
status = dlsetlibpath(NULL, 0);
}
RETURN VALUE
If successful, returns otherwise a non-0 value is returned. More
detailed diagnostic information is available through or
ERRORS
If fails, a subsequent call to returns one of the following values:
Cannot allocate dynamic memory.
Failed to apply relocation while resolving call to
call failed on entry to
call failed on exit from
failed on entry to or exit from
Invalid argument in call to
SEE ALSOdlopen(3C), dlopene(3C), dlgetfileinfo(3C), dlerrno(3C), dlerror(3C),
dld.so(5).
Texts and Tutorials:
(See the option)
(See manuals(5) for ordering information)
dlsetlibpath(3C)