用於檢查 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 和 google 上搜尋會得到如下指令

pkg-config、locate 和 which

有人成功使用過它們嗎?

答案1

嘗試以下ldd命令:

ldd ImageMagick

列印 ImageMagick 程式引用的動態共用物件庫以及是否找到這些庫。

答案2

你可以使用 yum 來安裝,它會顯示缺少的依賴項。

如果你只是想知道缺少什麼,你可以安裝 yum-downloadonly 插件,然後就可以

yum install -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可以只檢查庫,如果不存在則傳回錯誤。

相關內容