Que dois-je faire si la bibliothèque dynamique Linux est introuvable ?
Résoudre le problème selon lequel Linux ne trouve pas la bibliothèque dynamique
Les bibliothèques dynamiques sont des bibliothèques partagées. En ce qui concerne le problème selon lequel Linux ne trouve pas la bibliothèque dynamique. , vous devez d'abord comprendre les fonctionnalités des bibliothèques dynamiques :
Recommandé : "tutoriel Linux"
● Les bibliothèques dynamiques reportent le chargement des liens de certaines fonctions de bibliothèque à la période de fonctionnement du programme.
● Peut réaliser le partage de ressources entre les processus. (Les bibliothèques dynamiques sont donc également appelées bibliothèques partagées)
● Facilitez la mise à niveau de certains programmes.
● Même le chargement du lien peut être entièrement contrôlé par le programmeur dans le code du programme (appel explicite).
Comme le montre le premier point ci-dessus, la bibliothèque dynamique n'emballe pas les fichiers de bibliothèque dans le programme sous forme binaire comme la bibliothèque statique, mais dynamiquement lorsque le programme s'exécute au moment où la fonction de bibliothèque correspondante doit être appelé. Chargez la bibliothèque dynamique. À ce stade, le système ne connaît que le nom de la bibliothèque dynamique, mais ne connaît pas le chemin absolu. À ce stade, le chargeur dynamique du système (éditeur de liens/chargeur dynamique) est nécessaire. pour le programme exécutable elf, il est utilisé par ld-linux.so Pour compléter, il recherche successivement la section DT_RPATH du fichier elf (incontrôlable) => Variable d'environnement LD_LIBRARY_PATH => /etc/ld.so.cache file list => /lib/ et /usr/lib pour trouver le fichier de bibliothèque et le charger en mémoire.
Ensuite, ce que nous devons faire est d'ajouter le chemin absolu du répertoire où se trouve la bibliothèque dynamique à n'importe quelle séquence de la séquence de recherche du chargeur dynamique. Voici la méthode d'implémentation spécifique :
. Méthode 1 : Copier Il n'est pas recommandé de créer vos propres bibliothèques partagées dans /lib ou /usr/lib
Méthode 2 : Ajouter le chemin absolu du répertoire où se trouve la bibliothèque dynamique à la variable d'environnement système
2.1. Ajouter la bibliothèque dynamique Le chemin absolu du répertoire est temporairement ajouté à la variable d'environnement (il devient invalide à la fermeture du terminal)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/chiliast/homework/day03/shared/lib
2.2. où se trouve la bibliothèque dynamique dans ~/.bashrc ou /etc/profile (en vigueur de façon permanente)
Niveau utilisateur : ajoutez le chemin de la bibliothèque à la fin du fichier ~/.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/chiliast/homework/day03/shared/lib
source ~/.bashrc ou . ~/.bashrc pour rendre la configuration efficace
Niveau système : ajoutez le chemin de la bibliothèque à la fin du fichier /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/chiliast/homework/day03/shared/lib
source /etc/profile ou ./etc/profile pour rendre la configuration effective
Méthode 3 : Ajouter le chemin absolu du répertoire où se trouve la bibliothèque dynamique au fichier /etc/ld.so.cache (implémentation en 2 étapes)
Modifiez le fichier /etc/ld.so.conf et ajoutez le chemin du répertoire où se trouve le fichier de la bibliothèque
Exécutez ldconfig (nécessite les autorisations de super-utilisateur), cette commande reconstruira le / Fichier etc/ld.so.cache
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!