通过 rpm(zypper)编译和安装之间的区别

通过 rpm(zypper)编译和安装之间的区别

我通过以下方式openSUSE 11.1下载、编译和安装ImageMagick

wget ftp://.../pub/graphics/ImageMagick/ImageMagick-6.7.7-0.zip
unzip ImageMagick-6.7.7-0.zip
cd ImageMagick-6.7.7-0
./configure --prefix=/usr/local/ImageMagick
make
make install

一切都运行良好,直到我发现不支持 JPG:

identify -list format | grep -i jpg

[nothing related to JPG returned]

因此我使用以下命令重新配置并重新编译:

./configure --prefix=/usr/local/ImageMagick --with-jpeg=yes --with-jp2=yes
make
make install

但这并没有改变什么。

我最终卸载了:

make uninstall

并通过以下方式安装zypper

zypper install ImageMagick

此安装版本 6.4.3 现在支持 JPG:

identify -list format | grep -i jpg
JPG* JPEG      rw-   Joint Photographic Experts Group JFIF format

知道这是怎么回事吗?ImageMagick从源代码编译时没有此功能,但从 rpm 安装时却有此功能,可能的原因是什么?

请注意,我并不一定非常关心 ImageMagick(因为它现在可以工作),但通常关心他的行为,因为我在其他场合也以某种方式看到过这种情况发生。

答案1

这两种方法之间的差异至少可能有两个原因:

  • zypper 负责处理依赖项。因此,如果 ImageMagick 依赖于您没有的动态链接库,它将检索该库,以便 ImageMagick 可以提供与该库相关的功能。在这种情况下,现在 ImageMagick 及其依赖项已安装,您自己编译的可执行文件应该可以正常工作。

  • zypper(据我所知)不会编译软件包,它只会安装预编译的二进制文件。有一些依赖项仅在编译时才需要,以便能够编译特定功能,通常是库的标头(-dev 或 -devel 软件包)。如果您没有它们,配置可能会省略启用该功能以进行编译,或多或少冗长。要安装这些,正确的命令似乎是:
    # zypper in -d imagemagick

答案2

看起来你忘记make cleanmake mrproper第二个之后configure使用其他选项了。

相关内容