如何检查库是否已安装?

has*_*sen 196 linux libraries

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

在我现在的特定情况下,我想检查是否安装了 libjpeg。

fak*_*ken 260

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

ldconfig -p | grep libjpeg
Run Code Online (Sandbox Code Playgroud)

如果未安装 libjpeg,则不会有任何输出。如果已安装,您将获得每个可用版本的行。

用您想要的任何库替换 libjpeg,您就有了一种通用的、独立于发行版的* 方式来检查库的可用性。

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

**99% 的情况下*

  • @TomášZato:如果您尝试在没有超级用户身份的情况下运行它,则“ldconfig”不可用(显示“command not found”)。 (4认同)
  • 这应该被接受为答案。伟大的! (2认同)
  • 你能指定 **99% 次**吗?`bash: ldconfig: command not found` 在带有 xfce 的 Debian x64 Jessie 上!这是 debian 网站上推荐的 debian 版本... (2认同)
  • `/sbin/ldconfig -p` 对我有用,不需要 root。 (2认同)

rad*_*ius 35

您可以与您的发行版的包管理器(aptitude、yum 等)核对,但由于您没有提供发行版,我无法为您提供正确的命令。

另一种方法是运行gcc -ljpeg,如果你得到“ld: library not found for -ljpeg”,这意味着 gcc 没有找到这个库(但这并不意味着它没有安装),如果你得到类似“未定义符号”的信息: "_main", 引用自: ...' 表示找到了 libjpeg。

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* 是其他一些方法来查找系统中是否安装了 lib

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


小智 18

我使用whereis实用程序。

样本:

l1feh4ck3r@xxx:~$ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la
Run Code Online (Sandbox Code Playgroud)


小智 13

我用这个:

gcc -lpng
Run Code Online (Sandbox Code Playgroud)

安装lib后,它会产生:

undefined reference to 'main'
Run Code Online (Sandbox Code Playgroud)

安装lib 时:

cannot find -lpng
Run Code Online (Sandbox Code Playgroud)


Kim*_*Kim 11

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

dpkg -s packagename
Run Code Online (Sandbox Code Playgroud)

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

locate filename
Run Code Online (Sandbox Code Playgroud)

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

  • @dinomite apt-file 是你的朋友 :) (2认同)

小智 7

在基于 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
Run Code Online (Sandbox Code Playgroud)