GNU/Linux >> Belajar Linux >  >> Linux

KESALAHAN:ld.so:objek LD_PRELOAD tidak dapat dimuat sebelumnya:diabaikan

Jika Anda ingin memastikan pustaka dimuat jika dan hanya jika program lunar-calendar-gtk diluncurkan, Anda dapat menerapkan ini:

Anda menyetel variabel lingkungan per perintah dengan mengawali perintah dengannya:

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

Anda kemudian dapat memilih untuk meletakkan ini di skrip shell dan membuat lunar-calendar-gtk symlink ke skrip shell ini, menggantikan referensi asli. Ini secara efektif memastikan bahwa pustaka dimuat setiap kali aplikasi asli dijalankan.

Anda harus mengganti nama lunar-calendar-gtk asli ke hal lain, yang mungkin tidak terlalu menarik karena dapat menyebabkan masalah dengan pencopotan pemasangan dan pemutakhiran. Namun, menurut saya ini berguna dengan versi Skype sebelumnya.


Terima kasih atas tanggapannya. Sepertinya saya baru saja menyelesaikan masalah.

Karena LD_PRELOAD adalah untuk mengatur beberapa pustaka yang dimuat, saya memeriksa pustaka yang memuat sebelumnya dengan LD_PRELOAD, salah satunya adalah "liblunar-calendar-preload.so", yang tidak ada di jalur "/usr/lib/liblunar-calendar- preload.so", tetapi saya menemukan perpustakaan serupa "liblunar-calendar-preload-2.0.so", yang merupakan versi perbedaan dari yang sebelumnya.

Maka saya kira mungkin liblunar-calendar-preload.so diperbarui ke versi 2.0 ketika sistem diperbarui, meninggalkan LD_PRELOAD tetap menjadi "/usr/lib/liblunar-calendar-preload.so". Dengan demikian nama pustaka pramuat tidak diperbarui ke versi terbaru.

Untuk menghindari perubahan variabel lingkungan, saya membuat tautan simbolik di bawah jalur "/usr/lib"

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

Lalu saya restart bash, kesalahannya hilang.


Linker mempertimbangkan beberapa variabel lingkungan. salah satunya adalah LD_PRELOAD

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

Oleh karena itu linker akan mencoba memuat pustaka yang terdaftar di LD_PRELOAD variabel sebelum yang lain dimuat.

Apa yang mungkin terjadi di dalam variabel terdaftar perpustakaan yang tidak dapat dimuat sebelumnya. lihat ke dalam .bashrc Anda atau .bash_profile lingkungan tempat LD_PRELOAD disetel dan hapus pustaka itu dari variabel.


Linux
  1. Kesalahan OpenCA Tidak dapat memuat sertifikat dari database

  2. Tidak Dapat Menemukan -lm?

  3. Rpm:Kesalahan Saat Memuat Pustaka Bersama:Libz.so.1:Tidak Dapat Membuka File Objek Bersama:Tidak Ada File Tersebut

  1. "kesalahan saat memuat perpustakaan bersama:libjli.so:tidak dapat membuka file objek bersama:Tidak ada file atau direktori seperti itu" kesalahan 'java -version' pada Startup

  2. pscp – ssh_init:Kesalahan jaringan:Tidak dapat menetapkan alamat yang diminta

  3. Kesalahan Linux saat memuat pustaka bersama:tidak dapat membuka file objek bersama:Tidak ada file atau direktori tersebut

  1. libaio.so.1:tidak dapat membuka file objek bersama

  2. KESALAHAN:ld.so:objek 'libgtk3-nocsd.so.0' dari LD_PRELOAD tidak dapat dimuat sebelumnya

  3. KESALAHAN:Tidak dapat menghapus 'wrapt'. saat memasang tensorflow-gpu~=1.14