GNU/Linux >> Znalost Linux >  >> Linux

CHYBA:ld.so:objekt LD_PRELOAD nelze předem načíst:ignorováno

Pokud se chcete ujistit, že se knihovna načte pokud a jen tehdy program lunar-calendar-gtk je spuštěn, můžete použít toto:

Proměnnou prostředí na příkaz nastavíte tak, že před příkaz přidáte předponu:

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

Pak se můžete rozhodnout, že to vložíte do skriptu shellu a vytvoříte lunar-calendar-gtk symbolický odkaz na tento skript shellu, který nahrazuje původní odkaz. To účinně zajišťuje, že se knihovna načte pokaždé, když je spuštěna původní aplikace.

Budete muset přejmenovat původní lunar-calendar-gtk na něco jiného, ​​co nemusí být příliš zajímavé, protože to může způsobit problémy s odinstalací a aktualizací. Zjistil jsem však, že je to užitečné s dřívější verzí Skype.


Díky za reakce. Myslím, že jsem problém právě vyřešil.

Vzhledem k tomu, že LD_PRELOAD slouží k nastavení některé knihovny proloaded, zkontroluji knihovnu, která se předem načte pomocí LD_PRELOAD, z nichž jedna je "liblunar-calendar-preload.so", která neexistuje v cestě "/usr/lib/liblunar-calendar- preload.so", ale našel jsem podobnou knihovnu "liblunar-calendar-preload-2.0.so", což je odlišná verze předchozí.

Pak si myslím, že možná byl liblunar-calendar-preload.so aktualizován na verzi 2.0, když se systém aktualizoval, takže LD_PRELOAD zůstalo "/usr/lib/liblunar-calendar-preload.so". Název knihovny předběžného načtení tedy nebyl aktualizován na nejnovější verzi.

Abych se vyhnul změně proměnné prostředí, vytvořím symbolický odkaz pod cestou "/usr/lib"

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

Poté restartuji bash, chyba je pryč.


Linker bere v úvahu některé proměnné prostředí. jedna je LD_PRELOAD

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

Proto se linker pokusí načíst knihovny uvedené v LD_PRELOAD před načtením ostatních.

Co by se mohlo stát, že uvnitř proměnné je uvedena knihovna, kterou nelze předem načíst. podívejte se do svého .bashrc nebo .bash_profile prostředí, kde je LD_PRELOAD je nastavena a odeberte tuto knihovnu z proměnné.


Linux
  1. Jak vyřešit chybu „nelze otevřít soubor sdíleného objektu“ v distribucích Linuxu založených na Ubuntu

  2. Jak opravit chybu konfigurace:nelze najít adresář maker ‚m4‘ [Vyřešeno]

  3. Nelze otevřít konzolu XEN VM – chyba Virt-viewer:nelze otevřít displej [Vyřešeno]

  1. Chyba OpenCA Nelze načíst certifikát z databáze

  2. Nelze zkompilovat Python.h – Chyba instalace Websockify

  3. chyba konfigurace phpize:nelze najít zdroje (config.m4)

  1. Chyba Nelze najít OpenSSL [PHP Extension mysqlnd]

  2. Rpm:Chyba při načítání sdílených knihoven:Libz.so.1:Nelze otevřít soubor sdíleného objektu:Žádný takový soubor

  3. "chyba při načítání sdílených knihoven:libjli.so:nelze otevřít soubor sdíleného objektu:Žádný takový soubor nebo adresář" chyba "java -version" při spuštění