GNU/Linux >> Tutoriales Linux >  >> Linux

ERROR:ld.so:el objeto LD_PRELOAD no se puede precargar:ignorado

Si desea asegurarse de que la biblioteca esté cargada si y solo si el programa lunar-calendar-gtk se lanza, puede aplicar esto:

Establece la variable de entorno por comando anteponiendo el comando con ella:

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

Luego puede elegir poner esto en un script de shell y hacer lunar-calendar-gtk un enlace simbólico a este script de shell, reemplazando la referencia original. Esto asegura efectivamente que la biblioteca se carga cada vez que se ejecuta la aplicación original.

Tendrás que renombrar el lunar-calendar-gtk original a otra cosa, lo que podría no ser demasiado intrigante, ya que posiblemente cause problemas con la desinstalación y la actualización. Sin embargo, lo encontré útil con una versión anterior de Skype.


Gracias por las respuestas. Creo que he resuelto el problema justo ahora.

Dado que LD_PRELOAD es para configurar alguna biblioteca proloaded, verifico la biblioteca que ld precarga con LD_PRELOAD, una de las cuales es "liblunar-calendar-preload.so", que no existe en la ruta "/usr/lib/liblunar-calendar- preload.so", pero encuentro una biblioteca similar "liblunar-calendar-preload-2.0.so", que es una versión diferente de la anterior.

Entonces supongo que tal vez liblunar-calendar-preload.so se actualizó a una versión 2.0 cuando el sistema se actualizó, dejando LD_PRELOAD como "/usr/lib/liblunar-calendar-preload.so". Por lo tanto, el nombre de la biblioteca de precarga no se actualizó a la versión más reciente.

Para evitar cambiar la variable de entorno, creo un enlace simbólico en la ruta "/usr/lib"

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

Luego reinicio bash, el error desapareció.


El enlazador tiene en cuenta algunas variables de entorno. uno es LD_PRELOAD

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.

Por lo tanto, el enlazador intentará cargar las bibliotecas enumeradas en el LD_PRELOAD variable antes de que se carguen otras.

¿Cuál podría ser el caso de que dentro de la variable se enumere una biblioteca que no se puede cargar previamente? mira dentro de tu .bashrc o .bash_profile entorno donde el LD_PRELOAD está configurado y elimine esa biblioteca de la variable.


Linux
  1. Cómo resolver el error "no se puede abrir el archivo de objeto compartido" en las distribuciones de Linux basadas en Ubuntu

  2. Error de OpenCA No se puede cargar el certificado desde la base de datos

  3. No se puede compilar Python.h – Error de instalación de Websockify

  4. Error de configuración de phpize:no se pueden encontrar las fuentes (config.m4)

  5. Rpm:error al cargar bibliotecas compartidas:Libz.so.1:no se puede abrir el archivo de objeto compartido:no existe tal archivo

pscp – ssh_init:error de red:no se puede asignar la dirección solicitada

Error de Linux al cargar bibliotecas compartidas:no se puede abrir el archivo de objeto compartido:no existe tal archivo o directorio

No se puede encontrar el error de la biblioteca libcrypto

libaio.so.1:no se puede abrir el archivo de objeto compartido

ERROR:ld.so:el objeto 'libgtk3-nocsd.so.0' de LD_PRELOAD no se puede precargar

ERROR:No se puede desinstalar 'wrapt'. al instalar tensorflow-gpu~=1.14