fak*_*ken 260
要以发行版独立* 方式执行此操作,您可以将 ldconfig 与 grep 一起使用,如下所示:
ldconfig -p | grep libjpeg
Run Code Online (Sandbox Code Playgroud)
如果未安装 libjpeg,则不会有任何输出。如果已安装,您将获得每个可用版本的行。
用您想要的任何库替换 libjpeg,您就有了一种通用的、独立于发行版的* 方式来检查库的可用性。
如果由于某种原因未设置 ldconfig 的路径,您可以尝试使用其完整路径调用它,通常是/sbin/ldconfig.
**99% 的情况下*
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]。
小智 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)