USELIB(2)

NOME
uselib - seleziona una libreria condivisa

SINTASSI
#include <unistd.h>

int uselib(const char *library); Nota: Nessuna dichiarazione di questa chiamata di sistema si ritrova nelle intestazioni di glibc; vedi NOTE.

DESCRIZIONE
La chiamata di sistema uselib() serve per caricare una libreria condivisa che sarà usata dal processo chiamante. Viene dato un nome di percorso. L'indirizzo da cui caricare si trova nella stessa libreria. La libreria può avere qualunque formato binario riconosciuto.

VALORI RESTITUITI
In caso di esito positivo viene restituito zero. In caso di errore -1 e errno è impostato di conseguenza.

ERRORI
In aggiunta a tutti i codici di errore 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(7)).

ENFILE
    E' stato raggiunto il limite per l'intero 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.

CONFORME A
uselib() è specifico di Linux, e non deve essere usato in programmi pensati per essere portabili.

NOTE
Questa chiamata di sistema obsoleta non è supportata da glibc. Nelle intestazioni di glibc non si trova nessuna dichiarazione ma, per una stranezza della storia, le versioni di glibc precedenti alla 2.23 esportavano un'ABI per questa chiamata di sistema. Di conseguenza, per impiegare questa chiamata di sistema, era sufficiente dichiarare manualmente l'interfaccia nel proprio codice; in alternativa, si poteva invocare la chiamata di sistema usando syscall(2). Nelle vecchie versioni, uselib() fu usata 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" e "/".

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. A partire da Linux 3.15, questa chiamata di sistema è disponibile solo quando il kernel è configurato con l'opzione CONFIG_USELIB.

VEDERE ANCHE
ar(1), gcc(1), ld(1), ldd(1), mmap(2), open(2), dlopen(3), capabilities(7), ld.so(8)

COLOPHON
Questa pagina fa parte del rilascio 4.08 del progetto Linux man-pages. Una descrizione del progetto, le istruzioni per la segnalazione degli errori, e l'ultima versione di questa pagina si trovano su https://www.kernel.org/doc/man-pages/. La versione italiana fa parte del pacchetto man-pages-it v. 4.08, a cura di: ILDP "Italian Linux Documentation Project" http://www.pluto.it/ildp
Per la traduzione in italiano si può fare riferimento a http://www.pluto.it/ildp/collaborare/
Segnalare eventuali errori di traduzione a ildp@pluto.it