GNU/Linux >> Linux Esercitazione >  >> Linux

ERRORE:ld.so:l'oggetto LD_PRELOAD non può essere precaricato:ignorato

Se vuoi assicurarti che la libreria sia caricata se e solo se il programma lunar-calendar-gtk è stato lanciato, puoi applicare questo:

Si imposta la variabile d'ambiente per comando anteponendola al comando:

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

Puoi quindi scegliere di inserirlo in uno script di shell e creare lunar-calendar-gtk un collegamento simbolico a questo script di shell, sostituendo il riferimento originale. Ciò assicura efficacemente che la libreria venga caricata ogni volta che viene eseguita l'applicazione originale.

Dovrai rinominare il lunar-calendar-gtk originale a qualcos'altro, che potrebbe non essere troppo intrigante in quanto potrebbe causare problemi con la disinstallazione e l'aggiornamento. Tuttavia, l'ho trovato utile con una versione precedente di Skype.


Grazie per le risposte. Penso di aver risolto il problema solo ora.

Poiché LD_PRELOAD serve per impostare alcune librerie proloaded, controllo la libreria che ld precarica con LD_PRELOAD, una delle quali è "liblunar-calendar-preload.so", che non esiste nel percorso "/usr/lib/liblunar-calendar- preload.so", ma trovo una libreria simile "liblunar-calendar-preload-2.0.so", che è una versione diversa della precedente.

Quindi immagino che forse liblunar-calendar-preload.so sia stato aggiornato a una versione 2.0 quando il sistema è stato aggiornato, lasciando che LD_PRELOAD rimanga "/usr/lib/liblunar-calendar-preload.so". Pertanto, il nome della libreria di precaricamento non è stato aggiornato alla versione più recente.

Per evitare di modificare la variabile d'ambiente, creo un collegamento simbolico sotto il percorso "/usr/lib"

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

Quindi riavvio bash, l'errore è scomparso.


Il linker prende in considerazione alcune variabili di ambiente. uno è LD_PRELOAD

da 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.

Pertanto il linker tenterà di caricare le librerie elencate nel LD_PRELOAD variabile prima che le altre vengano caricate.

Cosa potrebbe accadere che all'interno della variabile sia elencata una libreria che non può essere precaricata. guarda dentro il tuo .bashrc o .bash_profile ambiente in cui il file LD_PRELOAD è impostato e rimuovi quella libreria dalla variabile.


Linux
  1. Come risolvere l'errore "Impossibile aprire il file oggetto condiviso" nelle distribuzioni Linux basate su Ubuntu

  2. Come risolvere l'errore di configurazione:impossibile trovare la directory macro 'm4' [Risolto]

  3. Impossibile aprire XEN VM Console – Errore Virt-viewer:impossibile aprire il display [Risolto]

  4. Impossibile compilare Python.h – Errore di installazione di Websockify

  5. Errore di configurazione di phpize:impossibile trovare le fonti (config.m4)

Rpm:Errore durante il caricamento di librerie condivise:Libz.so.1:Impossibile aprire il file di oggetti condivisi:nessun file di questo tipo

"errore durante il caricamento delle librerie condivise:libjli.so:impossibile aprire il file oggetto condiviso:nessun file o directory del genere" Errore 'java -version' all'avvio

Errore Linux durante il caricamento delle librerie condivise:impossibile aprire il file oggetto condiviso:file o directory non presenti

libaio.so.1:impossibile aprire il file oggetto condiviso

Impossibile trovare l'errore di configurazione di pkg

Errore di compilazione utilizzando cmake:impossibile trovare -lpthreads