NOME¶
uselib - seleziona una shared library
SINTASSI¶
#include <unistd.h>
int uselib(const char *library);
DESCRIZIONE¶
uselib seleziona la libreria condivisa che sarà usata dal
processo. Viene dato un pathname. L'indirizzo da cui caricare si trova nella
stessa libreria. La libreria può avee qualunque formato binario
riconosciuto.
VALORI RESTITUITI¶
In caso di esito positivo viene restituito zero, altrimenti -1 e
errno
contine il codice dell'errore verificatosi.
ERRORI¶
In aggiunta a tutti i codici di erore restituiti da
open(2) e
mmap(2), possono essere restituiti anche i seguenti:
- EACCES
- La libreria specificata da library non ha permessi in lettura o
esecuzione, o il chiamante non ha permessi di ricerca per una delle
directory nel percorso. (Vedere anche path_resolution(2).)
- ENFILE
- E' stato raggiunto il limite di sistema sul numero totale di file
aperti.
- ENOEXEC
- Il file specificato da library non è un eseguibile o un tipo
conosciuto, es., non ha i magic number corretti.
uselib() è specifico di Linux, e non deve essere usato in
programmi pensati per essere portabili.
NOTE¶
uselib() fu usata dai primi codici di avvio di libc per caricare le
librerie condivise con nomi trovati in un array di nomi nel binario.
A partire da libc 4.3.2, il codice di avvio prova a anteporre a questi nomi
"/usr/lib", "/lib" e "" prima di rinunciare. In
libc 4.3.4 e successive questi nomi sono cercati nelle directory trovate in
LD_LIBRARY_PATH, e, se non si trovano lì, vengono provati i prefissi
"/usr/lib", "/lib" and "/".
A partire da libc 4.4.4 viene caricata solo la libreria "/lib/ld.so",
così che la libreria dinamica possa caricare le restanti librerie
necessarie (usando di nuovo questa chiamata). Questo è anche lo stato
dell'arte in libc5.
glibc2 non usa questa chiamata.
VEDERE ANCHE¶
ar(1),
gcc(1),
ld(1),
ldd(1),
mmap(2),
open(2),
dlopen(3),
capability(7),
ld.so(8)