用于检查 RedHat 5.x 和 6.x 上的操作系统库的脚本

用于检查 RedHat 5.x 和 6.x 上的操作系统库的脚本

我们的产品附带了 ImageMagick。它需要相当多的库。

libtiff libICE libdl
libfreetype libX11 libglib-2.0
libjpeg libbz2 libxml2
libpng librsvg-2 libz
libfontconfig libgdk_pixbuf-2.0 libm
libXext libm libgomp
libXt libgobject-.0 libpthread
libSM libgmodule-2.0 

是否有标准方法来检查这些库是否已经存在于主机 RedHat 操作系统上?

在 SO 和谷歌上搜索,可以得到如下命令

pkg-config,locate 和 which

有人成功使用过它们吗?

答案1

尝试以下ldd命令:

ldd ImageMagick

打印出 ImageMagick 程序引用的动态、共享对象、库以及是否找到这些库。

答案2

您只需使用 yum 进行安装,它将显示缺少的依赖项。

如果你只是想知道缺少什么,你可以安装 yum-downloadonly 插件,然后你就可以

yum 安装 -y ImageMagick --downloadonly

这只会下载所有缺少的依赖项而不安装它们。

在安装 rpm 之前查找依赖项

rpm -qpR 某物.rpm

将列出所有依赖项,然后您可以搜索以查看这些依赖项是否存在,但这听起来太复杂了。可能 yum --downloadonly 就足够了。

答案3

我建议您使用autoconf;里面的工具将通过尝试针对库编译虚拟程序来自动检查是否存在库。 http://www.gnu.org/software/autoconf/manual/ 一个例子:

AC_CHECK_LIB(MagickWand, GetMagickModule)

这将尝试编译一个可以调用的简单程序GetMagickModule()- 它不会尝试运行该程序,只会编译它。

autoconf程序会生成一个configure程序,用于检查库。它的主要目的是最终生成一个 Makefile,但这不一定是它的目标;该configure程序可以只检查库,如果不存在则返回错误。

相关内容