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.
-
"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
-
pscp – ssh_init:Kesalahan jaringan:Tidak dapat menetapkan alamat yang diminta
-
Kesalahan Linux saat memuat pustaka bersama:tidak dapat membuka file objek bersama:Tidak ada file atau direktori tersebut