Imposta LD_LIBRARY_PATH per le applicazioni avviate dal desktop


8

Ho Qt Creator installato su Ubuntu 10.04 LTS. Quando avvio Qt Creator dal desktop posso creare l'applicazione su cui sto lavorando ma non posso eseguirla o eseguirne il debug. Dopo aver lottato un po ', ho scoperto che LD_LIBRARY_PATH non è impostato per le applicazioni eseguite dal desktop. Se avessi avviato Qt Creator da bash (dove LD_LIBRARY_PATH è impostato in .bashrc) tutto funziona e esegue il debug alla perfezione.

Come posso impostare LD_LIBRARY_PATH in modo che sia impostato per tutte le applicazioni in esecuzione?

Risposte:


6

Sembra un bug nell'applicazione stessa. Dovrebbe avere uno script wrapper che imposta correttamente tutte le LD_LIBRARY_PATHvariabili necessarie . Fai attenzione quando scrivi uno script del genere, poiché non vuoi avere una porzione vuota della LD_LIBRARY_PATHstringa tra i due punti che usa come separatori di percorso. Ad esempio, ciò potrebbe comportare un percorso errato, se inizialmente la variabile era vuota (risultando in una stringa vuota iniziale prima dei due punti):

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/some/path/for/app"

Quindi, quando aggiungi un percorso, ti consigliamo di verificare prima la stringa vuota. Ad esempio, usando il codice shell:

LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}/some/path/for/app

2

Crea un nuovo file /etc/ld.so.conf contenente:

# Begin /etc/ld.so.conf
/lib
/usr/lib
/usr/X11R6/lib
# whatever else #

Aggiorna la cache del caricatore dinamico eseguendo:

ldconfig

0

Inoltre .bashrc, imposta anche la variabile di ambiente in .profile. Questo file verrà elaborato e caricato dalla sessione, quindi dovrebbe influire su tutto ciò che viene eseguito come utente. Inoltre: questo file dice che non viene letto da Bash se .bashrcesiste, ma sembra applicarsi ancora (forse dal momento che Bash eredita la sessione X da dove è stato avviato). Tuttavia, non è male avere la variabile in entrambi i file.


Ho provato a creare .profile anche senza fortuna.
dwj,

Ho letto da qualche parte che esiste una funzionalità di "sicurezza" di Ubuntu (Debian?) Che non può permetterti di impostare LD_LIBRARY_PATH all'avvio poiché viene sovrascritto dopo aver caricato .profile. Ci sono ancora soluzioni alternative.
Alf


0

impostalo in /etc/bash.bashrc nella parte superiore per apportare una modifica a livello di sistema all'avvio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.