web-dev-qa-db-fra.com

ldd ne trouve pas de chemin, comment ajouter

Je sais que cette question n'est pas très nouvelle, mais il semble que je n'ai pas pu résoudre mon problème moi-même.

ldd génère la sortie suivante

u123@PC-Ubuntu:~$ ldd /home/u123/Programme/TestPr/Debug/TestPr
    linux-vdso.so.1 =>  (0x00007ffcb6d99000)
    libcsfml-window.so.2.2 => not found
    libcsfml-graphics.so.2.2 => not found
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcebb2ed000)
    /lib64/ld-linux-x86-64.so.2 (0x0000560c48984000)

Quelle est la bonne façon de dire à ld le bon chemin?

11
C-Jay

si vos bibliothèques ne sont pas sur le chemin standard, vous devez les ajouter au chemin ou ajouter un chemin non standard à LD_LIBRARY_PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<Your_non-Standard_path>

Une fois que vous avez effectué l'une des opérations ci-dessus, vous devez mettre à jour la liaison d'exécution de l'éditeur de liens dynamique en exécutant la commande ci-dessous:

Sudo ldconfig

MISE À JOUR:

Vous pouvez rendre les modifications permanentes en écrivant la ligne export ci-dessus dans l'un de vos fichiers de démarrage (par exemple ~/.bashrc) OU si la bibliothèque sous-jacente n'entre pas en conflit avec une autre bibliothèque, puis placée dans l'un des chemins de bibliothèque standard (par exemple/lib,/usr/lib)

12
SHW

LD_LIBRARY_PATH convient aux tests courts, mais comme il n'y a qu'une seule variable , il est difficile à utiliser lorsque vous pouvez avoir plusieurs applications avec des bibliothèques personnalisées.

La manière habituelle pour Debian/Ubuntu est de l'ajouter à la configuration du chargeur, par exemple, un fichier sous

/etc/ld.so.conf.d

contenant le répertoire dans lequel vous souhaitez que le chargeur recherche, par exemple,

/usr/local/libcsfml

Lectures complémentaires:

12
Thomas Dickey

Il semble que le binaire en question ait été compilé par vous.

Vous êtes donc responsable du problème que certaines bibliothèques sont introuvables.

Dans le cas où ces bibliothèques sont disponibles sur votre système, elles semblent se trouver dans des emplacements de répertoire non standard.

Utilisation -R directory pour l'appel final du compilateur pour indiquer à l'éditeur de liens directory où se trouvent les bibliothèques. Plus d'un seul -R directory l'option est possible.

Notez que lorsque vous utilisez gcc, vous devrez peut-être utiliser -Wl,-R au lieu de -R.

3
schily