Domanda

Qual è il posto migliore per impostare la variabile LD_LIBRARY_PATH specifica per l'applicazione su Solaris? Come funziona

  

LD_LIBRARY_PATH

lavoro variabile?

Attualmente lo configuriamo in .kshrc , ma diverse applicazioni richiedono versioni diverse del framework di messaggistica, ma queste applicazioni funzionano con lo stesso uso e quindi avrebbero bisogno di LD_LIBRARY_PATH , quindi secondo te qual è il posto migliore per impostare questa variabile?

Fondamentalmente sto cercando di capire come rendere questo percorso variabile parte dell'applicazione anziché specifico dell'ambiente dell'utente.

È stato utile?

Soluzione

Di solito avrei solo uno script shell che avvia l'applicazione. Nello script della shell imposterei LD_LIBRARY_PATH su quello che mi serve per quell'app, quindi fare in modo che lo script avvii quell'app. In questo modo dovrebbe essere impostato il percorso solo per quell'applicazione.

Altri suggerimenti

Puoi trovare una descrizione formale di LD_LIBRARY_PATH nella pagina man per " ld.so.1 " ;, cioè esegui " man ld.so.1 " ;. Descrive anche alcune altre variabili che sono onorate dal linker di runtime.

Oltre a LD_LIBRARY_PATH , gli eseguibili e le librerie condivise possono anche avere un percorso di ricerca integrato per le librerie. Se stai eseguendo un'applicazione che hai collegato tu stesso, puoi usare l'opzione -d -R per impostare il percorso integrato (sia Sun CC che gcc hanno opzioni per fare la stessa cosa). Ciò potrebbe consentire di evitare di utilizzare LD_LIBRARY_PATH in primo luogo.

Vladr, alanc ha ragione.

Non è consigliabile impostare LD_LIBRARY_PATH su Solaris. Assolutamente.

Se devi inserire un percorso specifico nella tua libreria o eseguibile, quindi dovresti usare il flag -R per il linker. Se costruisci con gcc, allora usa -Wl, Rpath (penso).

Se è necessario eseguire questa operazione per un passaggio post-compilazione (ad es. perché ti manca fonte per ricompilare), quindi elfedit (1) ti aiuterà molto. È documentato nella manpage e anche nella Guida alle librerie Linker + all'indirizzo http: // docs.oracle.com/cd/E26502_01/html/E26507/index.html

La risposta crle è più corretta. Su Solaris, LD_LIBRARY_PATH non dovrebbe essere usato. Usa invece crle. Per visualizzare i percorsi correnti, esegui semplicemente " crle " da solo. Per aggiornare l'elenco, usa crle -u -l / path / in / your / lib / directory . -u è necessario per scrivere le modifiche alla configurazione del sistema, altrimenti la modifica sarà temporanea. Vedi la pagina man per ulteriori opzioni.

Ho appena scoperto che LD_LIBRARY_PATH globale non ha effetto, ho dovuto avvolgere uno script e impostare LD_LIBRARY_PATH prima dell'app. crle è una buona soluzione globale se hai installato molte librerie in / opt / csw / lib, tramite pkgutil di blastwave.

Puoi controllare il tuo file .profile o .profile.user. Ci sarà una voce commentata per esso. Non è consigliabile usarlo poiché è rotto. Dovresti costruire i binari passando valori ai flag piuttosto che usare il variabile.

Puoi usare il comando crle:

crle -l / path / to / your / lib / file

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top