2004-11-03 13:51:07 +00:00
|
|
|
.\" Hey Emacs! This file is -*- nroff -*- source.
|
|
|
|
.\"
|
|
|
|
.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
|
|
|
|
.\"
|
|
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
|
|
.\" preserved on all copies.
|
|
|
|
.\"
|
|
|
|
.\" Permission is granted to copy and distribute modified versions of this
|
|
|
|
.\" manual under the conditions for verbatim copying, provided that the
|
|
|
|
.\" entire resulting derived work is distributed under the terms of a
|
|
|
|
.\" permission notice identical to this one.
|
2005-04-04 13:10:49 +00:00
|
|
|
.\"
|
2004-11-03 13:51:07 +00:00
|
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
|
|
.\" responsibility for errors or omissions, or for damages resulting from
|
|
|
|
.\" the use of the information contained herein. The author(s) may not
|
|
|
|
.\" have taken the same level of care in the production of this manual,
|
|
|
|
.\" which is licensed free of charge, as they might when working
|
|
|
|
.\" professionally.
|
2005-04-04 13:10:49 +00:00
|
|
|
.\"
|
2004-11-03 13:51:07 +00:00
|
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
|
|
.\"
|
|
|
|
.\" Modified by Michael Haardt <michael@moria.de>
|
|
|
|
.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
|
|
|
|
.\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
|
2005-04-04 13:10:49 +00:00
|
|
|
.\" Modified 2004-06-23 by Michael Kerrisk <mtk16@ext.canterbury.ac.nz>
|
|
|
|
.\" Modified 2005-01-09 by aeb
|
2004-11-03 13:51:07 +00:00
|
|
|
.\"
|
2007-05-30 05:36:26 +00:00
|
|
|
.TH USELIB 2 2005-01-09 "Linux" "Linux Programmer's Manual"
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH NAME
|
2005-04-04 13:10:49 +00:00
|
|
|
uselib \- load shared library
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH SYNOPSIS
|
|
|
|
.B #include <unistd.h>
|
|
|
|
.sp
|
|
|
|
.BI "int uselib(const char *" library );
|
|
|
|
.SH DESCRIPTION
|
2007-05-12 09:06:04 +00:00
|
|
|
The system call
|
|
|
|
.BR uselib ()
|
|
|
|
serves to load
|
2005-04-04 13:10:49 +00:00
|
|
|
a shared library to be used by the calling process.
|
2007-04-12 22:42:49 +00:00
|
|
|
It is given a pathname.
|
|
|
|
The address where to load is found
|
|
|
|
in the library itself.
|
|
|
|
The library can have any recognized
|
2005-04-04 13:10:49 +00:00
|
|
|
binary format.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH "RETURN VALUE"
|
2007-04-12 22:42:49 +00:00
|
|
|
On success, zero is returned.
|
|
|
|
On error, \-1 is returned, and
|
2004-11-03 13:51:07 +00:00
|
|
|
.I errno
|
|
|
|
is set appropriately.
|
|
|
|
.SH ERRORS
|
|
|
|
In addition to all of the error codes returned by
|
|
|
|
.BR open (2)
|
|
|
|
and
|
|
|
|
.BR mmap (2),
|
|
|
|
the following may also be returned:
|
|
|
|
.TP
|
|
|
|
.B EACCES
|
|
|
|
The library specified by
|
|
|
|
.I library
|
2005-04-04 13:10:49 +00:00
|
|
|
does not have read or execute permission, or the caller does not have
|
|
|
|
search permission for one of the directories in the path prefix.
|
|
|
|
(See also
|
2007-05-26 12:41:39 +00:00
|
|
|
.BR path_resolution (7).)
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
|
|
|
.B ENFILE
|
|
|
|
The system limit on the total number of open files has been reached.
|
|
|
|
.TP
|
|
|
|
.B ENOEXEC
|
|
|
|
The file specified by
|
|
|
|
.I library
|
2005-04-04 13:10:49 +00:00
|
|
|
is not an executable of known type,
|
|
|
|
e.g., does not have the correct magic numbers.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH "CONFORMING TO"
|
2007-05-12 09:06:04 +00:00
|
|
|
.BR uselib ()
|
2007-12-25 21:28:09 +00:00
|
|
|
is Linux-specific, and should not be used in programs
|
2004-11-03 13:51:07 +00:00
|
|
|
intended to be portable.
|
2005-04-04 13:10:49 +00:00
|
|
|
.SH NOTES
|
2007-05-12 09:06:04 +00:00
|
|
|
.BR uselib ()
|
|
|
|
was used by early libc startup code to load
|
2005-04-04 13:10:49 +00:00
|
|
|
the shared libraries with names found in an array of names
|
|
|
|
in the binary.
|
|
|
|
.LP
|
|
|
|
.\" libc 4.3.1f - changelog 1993-03-02
|
|
|
|
Since libc 4.3.2, startup code tries to prefix these names
|
|
|
|
with "/usr/lib", "/lib" and "" before giving up.
|
|
|
|
.\" libc 4.3.4 - changelog 1993-04-21
|
|
|
|
In libc 4.3.4 and later these names are looked for in the directories
|
2007-06-22 19:42:52 +00:00
|
|
|
found in
|
|
|
|
.BR LD_LIBRARY_PATH ,
|
|
|
|
and if not found there,
|
2005-04-04 13:10:49 +00:00
|
|
|
prefixes "/usr/lib", "/lib" and "/" are tried.
|
|
|
|
.LP
|
|
|
|
From libc 4.4.4 on only the library "/lib/ld.so" is loaded,
|
|
|
|
so that this dynamic library can load the remaining libraries needed
|
|
|
|
(again using this call).
|
|
|
|
This is also the state of affairs in libc5.
|
|
|
|
.LP
|
|
|
|
glibc2 does not use this call.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH "SEE ALSO"
|
|
|
|
.BR ar (1),
|
|
|
|
.BR gcc (1),
|
|
|
|
.BR ld (1),
|
|
|
|
.BR ldd (1),
|
|
|
|
.BR mmap (2),
|
|
|
|
.BR open (2),
|
2005-04-04 13:10:49 +00:00
|
|
|
.BR dlopen (3),
|
2007-07-10 04:29:20 +00:00
|
|
|
.BR capabilities (7),
|
2004-11-03 13:51:07 +00:00
|
|
|
.BR ld.so (8)
|