Ödeme Yöntemleri Abuse

Paylaşılan kütüphaneler yüklenirken Ошибка hatası

21.02.2024, 22:45

Linux kullanıcıları programları çalıştırırken sıklıkla paylaşılan kütüphanelerin yüklenmesi hatasıyla karşılaşırlar ve bu hata birçok programcı ve sistemlerinde yazılım derlemek isteyen herkes için de tanıdıktır. Kelimenin tam anlamıyla, paylaşılan kütüphaneler yüklenirken bir sorun olduğu anlamına gelir.

Paylaşılan kütüphaneler yüklenirken hata hatası hakkında daha fazla bilgi

"Paylaşılan kütüphaneler yüklenirken hata oluştu" hatası, bir program veya komut dosyası çalıştırılırken, işletim sisteminin bu programın çalışması için gerekli olan bir veya daha fazla kütüphaneyi bulamadığı ve yükleyemediği anlamına gelir. Bu, UNIX benzeri işletim sistemlerinde yaygın bir sorundur. Bir program derlendiğinde, çalışma zamanında mevcut olması gereken çeşitli harici kütüphanelere başvurabilir. Bu kütüphaneler eksikse veya kullanılamıyorsa, paylaşılan kütüphaneler yüklenirken bir hata oluşur.

Programlarınızı derlemeseniz bile, bu hatayı görebilirsiniz: directory_name: cannot open shared object file: No such file or directory Paket yöneticisi aracılığıyla olmayan yeni programlar veya başka bir dağıtım için tasarlanmış programlar yüklerken oldukça sık. Sistem kütüphaneyi bulamadığı için oluşur. Neden bulunamıyor ve yüklenemiyor?

Bunun birkaç nedeni vardır, genellikle hepsi bir kütüphaneye bağlıdır:

  • sistemde yüklü değildir;
  • yüklüdür, ancak yanlış yerdedir;
  • doğru yüklenmiş ancak yanlış sürüme sahip.

Sorunu çözerken, bu nedenlere rehberlik edeceğiz ve bunları çözmeye çalışacağız.

Paylaşılan kütüphaneleri yükleme hatası nasıl düzeltilir?

Şimdi, bir önceki paragrafta belirtilen nedenlere dayanarak bu sorunu çözmenin belirli örneklerini ele alalım.

Kütüphane yüklü değil

Burada karmaşık bir şey yok ve her şey oldukça açık - kütüphane sistemde mevcut değil, bu yüzden bu hatayı alıyoruz. Bu yüzden bir paket yöneticisi yardımıyla kütüphane paketini bulmamız ve yüklememiz gerekiyor. Genellikle, kütüphaneleri içeren paketler, kütüphanelerin kendileriyle aynı şekilde lib önekiyle adlandırılır.

Eğer libfuse2.so kütüphanesi eksikse Ubuntu'da bu komutla bulabiliriz:

$ sudo apt search libfuse2

O zaman geriye kalan tek şey onu kurmaktır:

$ sudo apt install libfuse2

Bir programı kaynaktan derlemeniz gerektiğinde, başlık dosyalarını da yüklemeniz gerekecektir:

$ sudo apt install libfuse-dev

Ve herhangi bir kütüphane için de öyle. Ancak bu her zaman işe yaramıyor.

Kütüphane yanlış katalogda

Uygulamada, kütüphanenin kurulduğu, ancak hatanın devam ettiği ve kullanıcıların sistemle normal şekilde etkileşime girmesine izin vermediği durumlar vardır. Böyle bir durumda ne yapmalı? Öncelikle, kütüphaneyi bulamayan Linux önyükleme yükleyicisini kontrol edin. Arama /etc/ld.conf.d/ yapılandırma dosyalarında belirtilen dizinlerde yapılmalıdır. Kural olarak, bunlar /usr/lib, /lib, /usr/lib64, /lib64'tür. Eğer kütüphane farklı bir dizine yüklenmişse, sorunun kaynağının bu olduğu açıktır.

Komutunu kullanarak yükleyici için şu anda hangi kütüphanelerin mevcut olduğunu görebilirsiniz:

$ ldconfig -p

locate komutunu kullanarak kütüphanenizin nerede olduğunu bulun. Örneğin, biz librtfreader.so kütüphanesi ile ilgileniyoruz:

$ locate librtfreader

opt/kingsoft/wps-office/office6/ konumunu bildiğimizde, yükleyicinin kütüphaneyi algılamasını mümkün kılmamız gerekir. Yapılandırma dosyasına ya da LD_LIBRARY_PATH değişkenine /etc/ld.so.conf.d/ yolunu ekleriz:

export LD_LIBRARY_PATH=/opt/kingsoft/wps-office/office6/

Hatayı çağıran herhangi bir kütüphane ile yükleme yapabilirsiniz. Doğru dizinde doğru kütüphaneye sembolik bir bağlantı oluşturarak daha az karmaşık bir yol da izleyebilirsiniz:

ln -s /opt/kingsoft/wps-office/office6/librtfreader.so /usr/lib/librtfreader.so

Geçersiz kütüphane sürümü

Bu genellikle yüklü olmayan bir dağıtım için programlar kullanırken olur. Her kütüphanenin .so uzantısından sonra yazılan ek bir sürümü vardır. Örneğin, libav.so.1. Bir kütüphane yamalandığında sürüm numarası değişir.

Genellikle bir dağıtımdaki bir program libc .so.1 gibi bir kütüphane bağımlılığı ile oluşturulur ve başka bir dağıtımda sadece libc .so.2 vardır. Çoğu durumda buradaki farklar küçüktür ve program kütüphanenin ikinci versiyonunda çalışabilir. Bu yüzden basitçe ona sembolik bir bağlantı oluşturabiliriz.

Örneğin, libusb-1.0.so.1 kütüphanesi yoktur. Ama libusb-1.0.so.0.1 var ve biz bunu kullanabiliriz:

Bunu yapmak için, kütüphaneye sembolik bir bağlantı oluşturmamız yeterlidir:

$ sudo ln -s /usr/lib/libusb-1.0.so.0.1 /usr/lib/libusb-1.0.so.1

Genellikle program ikameyi fark etmeyecek ve çalışacaktır. Akıllı bir çözüm olarak, mimariniz için kütüphanenin doğru sürümünü İnternet'te bulmaya çalışın ve /usr/lib/ veya /usr/lib64/ klasörüne yerleştirin. Ancak bundan sonra önbelleğin güncellenmesi arzu edilir:

$ sudo ldconfig

Bu adımlardan sonra sorun devam ederse, gerekli kütüphane sürümleri ve bunların nasıl kurulacağı hakkında daha ayrıntılı bilgi için programın veya işletim sisteminin belgelerine başvurmanız önerilir.