chiarimenti su rpath

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

chiarimenti su rpath

Messaggio 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

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: chiarimenti su rpath

Messaggio 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".

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: chiarimenti su rpath

Messaggio da conraid »

grazie

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6631
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: chiarimenti su rpath

Messaggio 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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: chiarimenti su rpath

Messaggio da conraid »

quel che non capisco è se però andrebbe indicato al momento della compilazione questo percorso o lo prende da se non disabilitandolo.

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6631
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: chiarimenti su rpath

Messaggio 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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Rispondi