Quote:
|
Originariamente inviato da -fidel-
Domanda: voglio che il mio programma carichi a runtime le librerie presenti nella cartella stessa del programma (es. /opt/myprog) invece che in quelle di default, e non voglio specificare questo a compile time. Sfruttando la variabile d'ambiente LD_LIBRARY_PATH ed ldconfig (aggiungendo /opt/myprog in /etc/ld.so.conf) risolvo no? In altre parole, LD_LIBRARY_PATH specifica anche la precedenza delle directory in cui il linker andrà a cercare le librerie?
|
Sì, ha la precedenza sui path di sistema.
Nota che non è necessario utilizzare ld.so.conf, basta LD_LIBRARY_PATH.
Quote:
|
(questo ovviamente può essere fatto automaticamente nella fase "post" di un'installazione da rpm)
|
E' come fanno diversi programmi, in effetti: l'eseguibile vero e proprio viene lanciato da uno script apposito che imposta le opportune variabili d'ambiente (tra cui LD_LIBRARY_PATH).
Nota che puoi anche usare --rpath per specificare una directory relativa (ad es. ../my/lib), ma è relativa alla directory di lancio del programma e non a quella in cui risiede il programma. Anche qui, occorre uno script che modifichi la directory corrente con quella del programma affinché --rpath abbia l'effetto desiderato.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
|