我们的产品附带了 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
程序可以只检查库,如果不存在则返回错误。