在Linux中,如何检查库是否安装? (从当然的命令行)。
在我现在的具体情况下,我想检查是否安装了libjpeg。
要以独立于发行版的方式执行此操作,可以使用带grep的ldconfig,如下所示:
ldconfig -p | grep libjpeg
如果libjpeg没有安装,将不会有输出。 如果已安装,则会为每个可用版本获取一行。
用你想要的任何库replacelibjpeg,并且你有一个通用的,独立于发行版的*检查库可用性的方法。
** 99%的时间*
你可以检查你的发行包的软件包(aptitude,yum,…),但是因为你没有给你的发行版,我不能给你正确的命令。
另一种方法是运行gcc -ljpeg
,如果你得到'ld:library not-for -ljpeg',这意味着gcc没有find这个库(但这并不意味着它没有安装),如果你得到类似的东西'未定义的符号:“_main”,引用自:…“这意味着libjpeg已被find。
locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg*
locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg*
是另外一些方法来查找是否在系统中安装了lib
还有很多其他的方法来检查,如果你给我们更多的上下文(为什么你需要检查libjpeg是否安装),我们可以给你最好的解决scheme,为您的具体情况。
我使用whereis实用程序。
样品:
l1feh4ck3r @ xxx:〜$ whereis libjpeg
libjpeg:/usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la
对于基于deb的分发,你可以做
dpkg -s packagename
或者如果您只知道文件名,请使用
locate filename
文件名通常是libsomething.so [.version]。
我使用这个:
gcc -lpng
当lib被安装时,它会产生:
undefined reference to 'main'
当lib 没有安装时:
cannot find -lpng
在基于Redhat的系统上,可以使用pkg-config来validation库是否已安装。 在进行安装之前,许多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
这一直由linux上的configuration工具完成。
看看这个关于autoconf和KDevelop的教程 。
其他技巧将使用像ldconfig
和dpkg
命令。