Question

Quel est le meilleur endroit pour configurer la variable LD_LIBRARY_PATH spécifique à l'application sur Solaris? Comment

  

LD_LIBRARY_PATH

travail variable?

Nous le configurons actuellement dans .kshrc , mais différentes applications nécessitent des versions différentes de l'infrastructure de messagerie, mais ces applications s'exécutent sous le même usage. Par conséquent, elles auraient besoin de LD_LIBRARY_PATH , à votre avis, quel est le meilleur endroit pour définir cette variable?

En gros, j'essaie de comprendre comment faire de ce chemin d'accès à la variable une partie de l'application au lieu d'être spécifique à l'environnement utilisateur.

Était-ce utile?

La solution

D'habitude, je n'aurais qu'un script shell qui lance l'application. Dans le script shell, je mettrais LD_LIBRARY_PATH sur ce dont j'avais besoin pour cette application, puis le script démarrait cette application. Si vous procédez ainsi, le chemin ne sera défini que pour cette application.

Autres conseils

Vous pouvez trouver une description formelle de LD_LIBRARY_PATH dans la page de manuel relative à "ld.so.1", c'est-à-dire exécuter "man ld.so.1". Il décrit également certaines autres variables qui sont honorées par l'éditeur de liens au moment de l'exécution.

En plus de LD_LIBRARY_PATH , les exécutables et les bibliothèques partagées peuvent également comporter un chemin de recherche intégré pour les bibliothèques. Si vous exécutez une application que vous avez vous-même liée, vous pouvez utiliser l'option -R de ld pour définir le chemin intégré (Sun CC et gcc ont tous deux la possibilité de faire la même chose). Cela vous permettra peut-être d'éviter d'utiliser LD_LIBRARY_PATH en premier lieu.

Vladr, alanc est correct.

Il n'est pas recommandé de définir LD_LIBRARY_PATH sous Solaris. Du tout.

Si vous devez créer un chemin d’exécution spécifique dans votre bibliothèque ou votre exécutable, alors vous devriez utiliser le drapeau -R pour l'éditeur de liens. Si vous construisez avec gcc, alors utilisez -Wl, Rpath (je pense).

Si vous avez besoin de faire cela pour une étape post-build (par exemple, parce que vous manquez source à recompiler), alors elfedit (1) vous aidera beaucoup. C'est documenté dans la page de manuel, ainsi que dans le Guide des bibliothèques Linker + à l'adresse http: // docs.oracle.com/cd/E26502_01/html/E26507/index.html

La réponse de crle est la plus correcte. Sous Solaris, LD_LIBRARY_PATH ne doit pas être utilisé. Utilisez crle à la place. Pour afficher les chemins actuels, exécutez simplement & cr; " " par lui-même. Pour mettre à jour la liste, utilisez crle -u -l / chemin / vers / votre / lib / répertoire . Le -u est nécessaire pour écrire les modifications dans la configuration du système, sinon les modifications seront temporaires. Consultez la page de manuel pour plus d'options.

Je viens de trouver un cas où LD_LIBRARY_PATH global ne prend pas effet. Je devais emballer un script et définir LD_LIBRARY_PATH avant l'application. crle est une bonne solution globale si vous avez installé beaucoup de bibliothèques sous / opt / csw / lib, via pkgutil de blastwave.

Vous pouvez vérifier votre fichier .profile ou .profile.user. Il y aura une entrée commentée. Il est déconseillé de l'utiliser car il est cassé.Vous devez créer les fichiers binaires en passant des valeurs à des indicateurs plutôt qu'en utilisant le variable.

Vous pouvez utiliser la commande crle:

crle -l / chemin / vers / votre / lib / fichier

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top