Pagina 1 di 1

chiarimenti su rpath

Inviato: sab 12 feb 2011, 14:25
da conraid
chi mi spiega bene questo parametro del configure?
--disable-rpath

nel senso non che serve a dibisalitare il "runtime library search paths", ma proprio cosa è questo controllo. Se disabilito (ho visto che su arch compilano quasi tutto così per esempio) ho vantaggi o svantaggi? i pacchetti hanno meno "dipendenza" dalla versione delle librerie? o è solo un modo per trovare prima il path delle stesse?
cercando in rete ho trovato una spiegazione su come agire con cmake
http://www.itk.org/Wiki/CMake_RPATH_han ... ATH_at_all
ed ho letto varie cose, ma se qualcuno mi spiega meglio ne sarei grato

Re: chiarimenti su rpath

Inviato: sab 12 feb 2011, 14:55
da 414N
Da come l'ho capita io, è un modo per cablare il percorso di ricerca delle librerie condivise richieste da un'applicazione nel binario dell'applicazione stessa.
In questo modo, in caso di librerie differenti ma omonime presenti sul sistema, si può forzare un binario a caricare quella giusta, e non la prima che si presenta nel percorso di ricerca.
Il fatto che in Arch venga rimosso è dovuto ad un possibile problema di sicurezza insito nell'uso degli rpath: è infatti possibile modificare l'ubicazione delle librerie puntate dal rpath per puntare a proprie librerie, magari piene di codice "malizioso".

Re: chiarimenti su rpath

Inviato: sab 12 feb 2011, 15:00
da conraid
grazie

Re: chiarimenti su rpath

Inviato: sab 12 feb 2011, 15:07
da targzeta
Interessante il link che hai postato Corrado. Io avevo sempre utlizzato la variabile d'ambiente LD_LIBRARY_PATH per indicare al linker dove andare a cercare le mie librerie, non sapevo neanche dell'esistenza di RPATH. Concordo con l'interpretazione di 414N.

Emanuele

Re: chiarimenti su rpath

Inviato: sab 12 feb 2011, 15:20
da conraid
quel che non capisco è se però andrebbe indicato al momento della compilazione questo percorso o lo prende da se non disabilitandolo.

Re: chiarimenti su rpath

Inviato: sab 12 feb 2011, 16:33
da targzeta
Allora, -rpath è una opzione per il linker (man ld). Il compilatore gnu non setta il run path all'interno dell'eseguibile a meno che non lo si specifichi. Ho provato a compilare un programma con 'make' e poi con 'LD_RUN_PATH=/home/spina/ make', nel secondo caso:

Codice: Seleziona tutto

readelf -d acpi| grep RPATH
 0x000000000000000f (RPATH)              Library rpath: [/home/spina/]
Emanuele

P.S. Ecco un altro link:
http://gcc.gnu.org/faq.html#rpath