如何检查是否安装了库?


166

在Linux中,如何检查是否安装了库?(当然是从命令行)。

在我的具体情况下,我想检查是否已安装libjpeg。


您正在使用什么发行版?
半径

Answers:


209

要以发行发行版*的方式执行此操作,可以将ldconfig与grep一起使用,如下所示:

ldconfig -p | grep libjpeg

如果未安装libjpeg,将没有输出。如果已安装,则将为每个可用版本显示一行。

用您想要的任何库替换libjpeg,并且您有一种通用的,与发行版无关的方式来检查库的可用性。

如果由于某种原因未设置ldconfig的路径,则可以尝试使用其完整路径来调用它/sbin/ldconfig

** 99%的时间*


2
这应该作为答案。大!

1
不可能用它来检查库的开发版本(标题),对吗?
andig

2
您可以指定99%次吗?bash: ldconfig: command not found在Debian x64 Jessie上使用xfce!这是Debian网站上的recomended debian发行...
托马什Zato

4
@TomášZato:如果您尝试以超级用户身份运行时ldconfig不可用(command not found显示)。
Gauthier

2
/sbin/ldconfig -p无需扎根就可以为我工作。
Pedro Gimeno

34

您可以与您的发行版的软件包管理器(aptitude,yum,...)进行核对,但是由于您没有提供发行版,因此我无法给您正确的命令。

另一种方法可以运行gcc -ljpeg,如果得到“ ld:-ljpeg找不到库”,则意味着如果您得到“未定义符号”之类的信息,则gcc尚未找到该库(但这并不意味着未安装该库)。 :“ _main”,引用自:...',表示已找到libjpeg。

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* 还有其他方法可以找到系统中是否安装了lib

还有很多其他检查方法,如果您给我们更多的上下文(为什么需要检查是否安装了libjpeg),我们可以为您提供针对特定情况的最佳解决方案。


如何使用才能找到它?
步步高

17

我使用whereis实用程序。

样品:

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

11

我用这个:

gcc -lpng

安装lib后,将产生:

undefined reference to 'main'

安装lib时:

cannot find -lpng

9

对于基于Deb的分发,您可以执行

dpkg -s packagename

或者,如果您仅知道文件名,请使用

locate filename

文件名通常是libsomething.so [.version]。


1
对于静态版本,文件名也可以像“ libsomething.a”。
半径

我发现dpkg -s实用程序受到限制,因为它需要实际的程序包名称,该名称可能与库本身有所不同。我使用dpkg -s|grep LIBRARY
Drew Stephens

2
@dinomite apt-file是您的朋友:)
半径

4

在基于Redhat的系统上,可以使用pkg-config来验证是否安装了库。实际上,许多rpm二进制文件在进行安装之前都会进行相同的检查,因此我们可以合理地依靠其准确性。

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

您也可以尝试使用dpkg来检查它是否已安装。

dpkg --list | grep [some_key_words_of_your_lib]

此外,在CentOS上,您可以尝试一下。

rpm -qa [lib_name]


注意:仅适用于基于Debian的发行版
ALex_hha 18-10-25

@ALex_hha是的,谢谢,应该强调这一点。在CentOS或基于Red Hat的系统上,请pkg-config改用。
斯科特阳
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.