Définir LD_LIBRARY_PATH pour les applications démarrées à partir du bureau

8

J'ai Qt Creator installé sur Ubuntu 10.04 LTS. Lorsque je lance Qt Creator à partir du bureau, je peux créer l'application sur laquelle je travaille, mais je ne peux pas l'exécuter ou la déboguer. Après avoir lutté un peu, j'ai trouvé que LD_LIBRARY_PATH n'est pas défini pour les applications qui sont exécutées à partir du bureau. Si je démarre Qt Creator à partir de bash (où LD_LIBRARY_PATH est défini dans .bashrc), tout fonctionne et se débogue parfaitement.

Comment définir LD_LIBRARY_PATH pour qu'il soit défini pour toutes les applications en cours d'exécution?

dwj
la source

Réponses:

6

Cela ressemble à un bogue dans l'application elle-même. Il doit avoir un script wrapper qui définit correctement toutes les LD_LIBRARY_PATHvariables nécessaires . Soyez prudent lorsque vous écrivez un tel script, car vous ne voulez pas avoir de partie vide de la LD_LIBRARY_PATHchaîne entre les deux-points qu'il utilise comme séparateurs de chemin. Par exemple, cela pourrait entraîner un mauvais chemin, si la variable était vide initialement (résultant en une chaîne vide de tête avant les deux-points):

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

Ainsi, lors de l'ajout d'un chemin, vous voudrez d'abord tester la chaîne vide. Par exemple, en utilisant du code shell:

LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}/some/path/for/app
Kees Cook
la source
2

Créez un nouveau fichier /etc/ld.so.conf contenant:

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

Mettez à jour le cache du chargeur dynamique en exécutant:

ldconfig
Extenseur
la source
0

En plus de .bashrc, définissez également la variable d'environnement dans .profile. Ce fichier sera traité et chargé par votre session, il devrait donc affecter tout ce qui s'exécute en tant qu'utilisateur. Aussi: Ce fichier indique qu'il n'est pas lu par Bash s'il .bashrcexiste, mais il semble s'appliquer toujours (peut-être puisque Bash hérite de la session X d'où elle a été démarrée). Cependant, cela ne fait pas de mal d'avoir la variable dans les deux fichiers.

Jacob Peddicord
la source
J'ai également essayé de créer .profile sans succès.
dwj
J'ai lu quelque part qu'il existe une fonctionnalité de "sécurité" d'Ubuntu (Debian?) Qui ne peut pas vous permettre de définir LD_LIBRARY_PATH au démarrage car elle est écrasée après le chargement de .profile. Il existe encore des solutions de contournement.
alfC
0

définissez-le dans /etc/bash.bashrc vers le haut pour effectuer un changement à l'échelle du système au démarrage.

Roop
la source