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?
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)
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:
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
.