Maison  >  Article  >  Opération et maintenance  >  Que dois-je faire si la bibliothèque dynamique Linux est introuvable ?

Que dois-je faire si la bibliothèque dynamique Linux est introuvable ?

藏色散人
藏色散人original
2020-05-25 10:13:082998parcourir

Que dois-je faire si la bibliothèque dynamique Linux est introuvable ?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn