Bir kütüphane kurulup kurulmadığı nasıl kontrol edilir?


167

Linux'ta bir kütüphanenin kurulu olup olmadığını nasıl kontrol edebilirim? (tabii ki komut satırından).

Şimdi özel davamda libjpeg'in kurulu olup olmadığını kontrol etmek istiyorum.


Hangi dağıtımı kullanıyorsunuz?
yarıçapı

Yanıtlar:


210

Bunu, kesinlikle bağımsız * bir şekilde yapmak için, ldconfig ile grep komutunu kullanabilirsiniz.

ldconfig -p | grep libjpeg

Libjpeg kurulu değilse, çıktı alınmayacaktır. Yüklüyse, kullanılabilir her sürüm için bir satır alırsınız.

İstediğiniz kütüphaneyle libjpeg'i değiştirin ve kütüphanenin kullanılabilirliğini kontrol etmenin genel, tarafsız ve bağımsız bir * yöntemine sahipsiniz.

Herhangi bir nedenle ldconfig'e giden yol ayarlanmadıysa, genellikle tam yolunu kullanarak onu çağırmayı deneyebilirsiniz /sbin/ldconfig.

** Zamanların% 99'u *


2
Bu cevap olarak kabul edilmelidir. Harika!

1
Bunu, bir kütüphanenin dev versiyonunu (başlıklarını) kontrol etmek için kullanmak mümkün değil mi?
andig,

2
% 99 kez belirtebilir misiniz ? bash: ldconfig: command not foundDebian x64 Jessie ile xfce! Bu, debian internet sitesindeki tavsiye edilen debian sürümüdür ...
Tomáš Zato 12:15

4
@ TomášZato: Süper kullanıcı olmadan çalıştırmayı denerseniz ldconfigmevcut değil ( görünür command not found).
Gauthier,

2
/sbin/ldconfig -pKök olmaya gerek kalmadan benim için çalışıyor.
Pedro Gimeno,

34

Dağıtımınızın paket yöneticisini (yetenek, yum, ...) kontrol edebilirsiniz ancak dağıtımınızı vermediğiniz için size doğru komutu veremem.

gcc -ljpegEğer 'ld: kütüphanesi -ljpeg' için bulunmazsa, gcc'nin kütüphaneyi bulamadığı anlamına gelir (ama kurulu olmadığı anlamına gelmez), 'Tanımsız semboller gibi bir şey alırsanız, koşmak başka bir yol olabilir. : "_main", başvuru yapılan: ... ', libjpeg'nin bulunduğu anlamına gelir.

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* lib sistemde yüklü olup olmadığını bulmak için başka bir yoludur

Bize daha fazla içerik verirseniz (neden libjpeg'in kurulu olup olmadığını kontrol etmeniz gerekiyorsa) size özel durumunuz için en iyi çözümü verebileceğimizi kontrol etmenin başka bir yolu vardır.


Yetenek kullanarak nasıl bulabilirim?
BBK

17

Kullanmak whereis yarar.

Numune:

l1feh4ck3r@xxx:~$ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la

11

Bunu kullanıyorum:

gcc -lpng

Lib yüklendiğinde, şunları verir:

undefined reference to 'main'

Lib yüklü değilse :

cannot find -lpng

9

Deb bazlı dağıtım için yapabilecekleriniz

dpkg -s packagename

Veya yalnızca dosya adını biliyorsanız

locate filename

Dosya adı genellikle libsomething.so [.version] 'dır.


1
Dosya adı ayrıca statik sürüm için "libsomething.a" gibi bir şey olabilir.
yarıçapı

dpkg -sYardımcı programda sınırlı buluyorum , çünkü kitaplığın kendisinden hafifçe veya önemli ölçüde farklı olabilecek asıl paket adını istiyor. Kullandığımdpkg -s|grep LIBRARY
Drew Stephens

2
@dinomite apt-file arkadaşın :)
yarıçapı

4

Redhat tabanlı sistemlerde, bir kütüphanenin kurulu olup olmadığını doğrulamak için pkg-config kullanabilirsiniz. Pek çok rpm ikili dosyası aslında kuruluma devam etmeden önce aynı kontrolleri yapar, bu yüzden onun doğruluğuna makul bir şekilde güvenebiliriz.

pkg-config --cflags jpeg

pkg-config --libs jpeg

pkg-config --cflags "jpeg >= 1.0.0" # for version check
pkg-config  --modversion jpeg | awk -F. '{ printf "0x%02X%02X%02X\n",$1,$2,$3 }' #version check


1

Yüklenip yüklenmediğini kontrol etmek için dpkg kullanmayı da deneyebilirsiniz.

dpkg --list | grep [some_key_words_of_your_lib]

Ayrıca, CentOS'ta bunu deneyebilirsiniz.

rpm -qa [lib_name]


Not: Sadece Debian merkezli dağıtımlar için çalışacak
ALex_hha

@ALex_hha Evet, teşekkür ederim, bu vurgulanmalıdır. CentOS veya kırmızı şapka tabanlı sistemlerde pkg-configyerine kullanın.
Scott Yang,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.