GNU/Linux >> Tutoriels Linux >  >> Linux

ERREUR :ld.so :l'objet LD_PRELOAD ne peut pas être préchargé :ignoré

Si vous voulez vous assurer que la bibliothèque est chargée si et seulement si le programme lunar-calendar-gtk est lancé, vous pouvez appliquer ceci :

Vous définissez la variable d'environnement par commande en préfixant la commande :

$ LD_PRELOAD="liblunar-calendar-preload.so" printenv "LD_PRELOAD"
liblunar-calendar-preload.so
$ printenv "LD_PRELOAD"
$

Vous pouvez alors choisir de mettre ceci dans un script shell et faire lunar-calendar-gtk un lien symbolique vers ce script shell, remplaçant la référence d'origine. Cela garantit effectivement que la bibliothèque est chargée à chaque fois que l'application d'origine est exécutée.

Vous devrez renommer le lunar-calendar-gtk d'origine à autre chose, ce qui n'est peut-être pas trop intrigant car cela peut entraîner des problèmes de désinstallation et de mise à niveau. Cependant, je l'ai trouvé utile avec une ancienne version de Skype.


Merci pour les réponses. Je pense avoir résolu le problème tout à l'heure.

Étant donné que LD_PRELOAD sert à définir certaines bibliothèques proloadées, je vérifie la bibliothèque que ld précharge avec LD_PRELOAD, dont l'une est "liblunar-calendar-preload.so", qui n'existe pas dans le chemin "/usr/lib/liblunar-calendar- preload.so", mais je trouve une bibliothèque similaire "liblunar-calendar-preload-2.0.so", qui est une version différente de la précédente.

Ensuite, je suppose que liblunar-calendar-preload.so a peut-être été mis à jour vers une version 2.0 lors de la mise à jour du système, laissant LD_PRELOAD rester à "/usr/lib/liblunar-calendar-preload.so". Ainsi, le nom de la bibliothèque de préchargement n'a pas été mis à jour vers la version la plus récente.

Pour éviter de changer de variable d'environnement, je crée un lien symbolique sous le chemin "/usr/lib"

sudo ln -s liblunar-calendar-preload-2.0.so liblunar-calendar-preload.so

Ensuite, je redémarre bash, l'erreur a disparu.


L'éditeur de liens prend en compte certaines variables d'environnement. un est LD_PRELOAD

à partir de man 8 ld-linux :

LD_PRELOAD
          A whitespace-separated list of additional,  user-specified,  ELF
          shared  libraries  to  be loaded before all others.  This can be
          used  to  selectively  override  functions   in   other   shared
          libraries.   For  setuid/setgid  ELF binaries, only libraries in
          the standard search directories that are  also  setgid  will  be
          loaded.

Par conséquent, l'éditeur de liens essaiera de charger les bibliothèques répertoriées dans le LD_PRELOAD variable avant que les autres ne soient chargées.

Qu'est-ce qui pourrait arriver qu'à l'intérieur de la variable soit répertoriée une bibliothèque qui ne peut pas être préchargée. regardez à l'intérieur de votre .bashrc ou .bash_profile environnement où le LD_PRELOAD est définie et supprimez cette bibliothèque de la variable.


Linux
  1. Comment résoudre l'erreur "impossible d'ouvrir le fichier objet partagé" dans les distributions Linux basées sur Ubuntu

  2. Vous ne trouvez pas -lm ?

  3. Rpm :erreur lors du chargement des bibliothèques partagées :Libz.so.1 :impossible d'ouvrir le fichier d'objet partagé :aucun fichier de ce type

  4. pscp - ssh_init :erreur réseau :impossible d'attribuer l'adresse demandée

  5. Impossible de trouver l'erreur de bibliothèque libcrypto

"Erreur lors du chargement des bibliothèques partagées :libjli.so :impossible d'ouvrir le fichier d'objet partagé :aucun fichier ou répertoire de ce type" Erreur "java -version" au démarrage

Erreur Linux lors du chargement des bibliothèques partagées :impossible d'ouvrir le fichier objet partagé :aucun fichier ou répertoire de ce type

libaio.so.1 :impossible d'ouvrir le fichier objet partagé

Impossible de trouver l'erreur pkg-config

Erreur de construction avec cmake :impossible de trouver -lpthreads

ERREUR :Impossible de désinstaller 'wrapt'. lors de l'installation de tensorflow-gpu ~=1.14