GNU/Linux >> Tutoriels Linux >  >> Linux

Comment spécifiez-vous l'emplacement des bibliothèques à un binaire ? (Linux)

Pour une utilisation ponctuelle, définissez la variable LD_LIBRARY_PATH à une liste de répertoires séparés par deux-points à rechercher. Ceci est analogue à PATH pour les exécutables, sauf que les répertoires système standard sont également recherchés après ceux spécifiés via l'environnement.

LD_LIBRARY_PATH=/usr/local/lib64 ./cart5

Si vous avez un programme qui conserve les bibliothèques dans un emplacement non standard et n'est pas capable de les trouver par lui-même, vous pouvez écrire un script wrapper :

#!/bin/sh
if [ -n "$LD_LIBRARY_PATH" ]; then
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64
else
  LD_LIBRARY_PATH=/usr/local/lib64
fi
export LD_LIBRARY_PATH
exec /path/to/cart5 "[email protected]"

La liste des répertoires système standard est conservée dans /etc/ld.so.conf . Les systèmes récents permettent à ce fichier d'inclure d'autres fichiers; si le vôtre contient quelque chose comme include /etc/ld.so.conf.d/*.conf , créez un nouveau fichier appelé /etc/ld.so.conf.d/mala.conf contenant les répertoires que vous souhaitez ajouter. Après avoir changé /etc/ld.so.conf ou un fichier inclus, exécutez /sbin/ldconfig pour que vos modifications prennent effet (cela met à jour un cache).

(LD_LIBRARY_PATH s'applique également à de nombreux autres unices, notamment FreeBSD, NetBSD, OpenBSD, Solaris et Tru64. HP-UX a SHLIB_PATH et Mac OS X a DYLD_LIBRARY_PATH . /etc/ld.so.conf a des analogues sur la plupart des unix mais l'emplacement et la syntaxe diffèrent plus largement.)


Si vous souhaitez éviter LD_LIBRARY_PATH, vous pouvez également le faire, lors de la liaison :

gcc -o exename -L/path/to/dynamiclib/ -lnameofLib \
    -Wl,-R/path/to/dynamiclib/ sourceCode1.c ...

Le -Wl,... est utilisé pour passer des commandes supplémentaires à l'éditeur de liens, et dans ce cas, avec -R vous dites à l'éditeur de liens de stocker ce chemin comme "chemin de recherche par défaut" pour le .so.

Je garde des notes de nombreux petits conseils comme celui-ci, sur mon site :

https://www.thanassis.space/tricks.html


Linux
  1. Comment Linux est arrivé sur le mainframe

  2. Comment régler par programmation l'horloge matérielle sous Linux ?

  3. Comment identifier le chipset d'un périphérique USB sous Linux ?

  4. Comment désassembler un exécutable binaire sous Linux pour obtenir le code assembleur ?

  5. Comment utiliser les expressions régulières avec la commande cp sous Linux ?

Comment obtenir la taille d'un répertoire sous Linux

Comment vérifier la version du noyau sous Linux

Comment vérifier la complexité du mot de passe sous Linux

Comment lister les membres d'un groupe sous Linux

Comment vérifier le niveau d'exécution sous Linux

Comment personnaliser la commande Linux top