gpt4 book ai didi

linux - Inkscape 0.92.2编译: links with two libMagick versions

转载 作者:太空宇宙 更新时间:2023-11-04 12:10:29 24 4
gpt4 key购买 nike

我已经编译了 Inkscape 0.92.2(在 Slackware64-current Linux 上),但无法导出为 PNG。

我发现一些引用资料表明 libpng 可能是罪魁祸首。实际上,我发现 inkscape 可执行文件与两个版本的 libpng(1.5 和 1.6)链接。

大量跟踪和调试显示问题似乎是可执行文件与两个版本的 libMagick(6 和 7)链接,这两个版本导入了不同版本的 libpng。

检查 Inkscape config.log 文件显示确实访问了两个库:

pkg_cv_IMAGEMAGICK_LIBS='-lMagick++-6.Q16 -lMagickWand-7.Q16HDRI -lMagickCore-7.Q16HDRI'

编辑:根据 emcconville 的建议,我添加了 --with-magick-plus-plus=yes 并重新编译了所有内容(包括 ImageMagick 和 Inkscape。虽然运气不佳:

$ ldd /usr/bin/inkscape | grep Magick
libMagick++-6.Q16.so.5 => /usr/lib64/libMagick++-6.Q16.so.5 (0x00007f5ee46f3000)
libMagickWand-6.Q16.so.2 => /usr/lib64/libMagickWand-6.Q16.so.2 (0x00007f5ee43d3000)
libMagickCore-6.Q16.so.2 => /usr/lib64/libMagickCore-6.Q16.so.2 (0x00007f5ee3d23000)
libMagickWand-7.Q16HDRI.so.5 => /usr/lib64/libMagickWand-7.Q16HDRI.so.5 (0x00007f5ee2e9b000)
libMagickCore-7.Q16HDRI.so.5 => /usr/lib64/libMagickCore-7.Q16HDRI.so.5 (0x00007f5ee27a3000)

也许版本 6 中还有另一个库。虽然我似乎找不到哪个。

Edit2:在应用 emcconville 的步骤之前,我想了解发生了什么......

这些是实际的库及其链接:

libMagick++                         so -> so.5.0.0
so.5 -> so.5.0.0
so.5.0.0
libMagick++-6.Q16 a la so -> so.5.0.0
so.5 -> so.5.0.0
so.5.0.0
libMagick++-7.Q16HDRI a la so -> so.4.0.0
so.4 -> so.4.0.0
so.4.0.0
libMagickCore-6.Q16 a la so -> so.2.0.0
so.2 -> so.2.0.0
so.2.0.0
libMagickCore-7.Q16HDRI a la so -> so.5.0.0
so.5 -> so.5.0.0
so.5.0.0
libMagickWand-6.Q16 a la so -> so.2.0.0
so.2 -> so.2.0.0
so.2.0.0
libMagickWand-7.Q16HDRI a la so -> so.5.0.0
so.5 -> so.5.0.0
so.5.0.0
libMagickCore so -> so.5.0.0
so.5 -> so.5.0.0
so.5.0.0
libMagickWand so -> so.5.0.0
so.5 -> so.5.0.0
so.5.0.0

这似乎是可以接受的,除了(未版本化的)libMagic++libMagickCorelibMagicWand,我怀疑它们是 5.xxx 版本并且可以被删除。

.PC 文件有点复杂:

---- Version 6 pc files ---------Version 7 pc files ------
ImageMagick-6.Q16.pc ImageMagick-7.Q16HDRI.pc
ImageMagick++-6.Q16.pc
Magick++-6.Q16.pc Magick++-7.Q16HDRI.pc
MagickCore-6.Q16.pc MagickCore-7.Q16HDRI.pc
MagickWand-6.Q16.pc MagickWand-7.Q16HDRI.pc

--- Relationships:
ImageMagick.pc -> ImageMagick-6.Q16.pc
Magick++.pc is same as Magick++-7.Q16HDRI.pc (not a link!)
MagickCore.pc is same as MagickCore-7.Q16HDRI.pc (not a link!)
MagickWand.pc is same as MagickWand-7.Q16HDRI.pc (not a link!)

注意:ImageMagic.pc 指向版本 6,并且没有生成 ImageMagick++-7.Q16HDRI.pc(甚至启用++ 编译选项)

Edit3: 今天我再次重新编译了最后一个版本的 ImageMagick,这次更密切地监视它生成和安装的文件。 @emcconville 对 pc 文件使用符号链接(symbolic link)的建议似乎并不完全实用,因为每次安装都会覆盖这些符号链接(symbolic link)。(请参阅 edit2 中的最后一张表)。不过,虽然这个系统是这样的,但似乎没有任何其他解决方案。

最佳答案

我想我知道发生了什么,但这更像是一种“预感”而不是答案。

我怀疑有一个额外的 .pc 脚本四处飘荡,您只需要将其删除即可。

  1. 找到 ImageMagick.pcImageMagick++.pc 的位置。这通常在 /usr/share/pkgconfig//usr/local/share/pkgconfig//usr/lib/pkgconfig/ 下, /usr/lib64/pkgconfig/, & etc etc etc.

    不要只停留在第一个匹配项上,而是使用 locatefind 实用程序扫描所有内容。

    find /usr/ -name "ImageMagick*.pc" -type f
  2. 您应该有一个类似于...的列表。

    /usr/local/share/pkgconfig/ImageMagick++.pc
    /usr/local/share/pkgconfig/ImageMagick.pc
    /usr/local/share/pkgconfig/ImageMagick++-6.Q16.pc
    /usr/local/share/pkgconfig/ImageMagick-6.Q16.pc
    /usr/local/share/pkgconfig/ImageMagick++-7.Q16HDRI.pc
    /usr/local/share/pkgconfig/ImageMagick-7.Q16HDRI.pc
  3. 核对有问题的文件。

    # Create a backup place
    mkdir -p ~/backups
    # Archive `.pc' files for future investigations.
    gzip < /usr/local/share/pkgconfig/ImageMagick.pc > ~/backups/ImageMagick.pc.gz
    gzip < /usr/local/share/pkgconfig/ImageMagick++.pc > ~/backups/ImageMagick++.pc.gz
    # Remove
    sudo rm /usr/local/share/pkgconfig/ImageMagick.pc
    sudo rm /usr/local/share/pkgconfig/ImageMagick++.pc
    # Repeat as nessasry for duplicate instances,
    # but KEEP files with version prefixes (i.e `-6.Q16' & `-7.Q16HDRI')
  4. 创建符号链接(symbolic link)(假设 ImageMagick-7 是您系统的默认版本)。

    sudo ln -s /usr/local/share/pkgconfig/ImageMagick-7.Q16HDRI.pc /usr/local/share/pkgconfig/ImageMagick.pc
    sudo ln -s /usr/local/share/pkgconfig/ImageMagick++-7.Q16HDRI.pc /usr/local/share/pkgconfig/ImageMagick++.pc
  5. 重建 inkscape,并确认问题已解决。

  6. 给 future 的自己写一张便条,描述您所做的事情,以及重复/恢复的步骤。某些程序尚未迁移到 IM-7,因此您很可能需要更新通用 .pc 文件以指向 IM-6(或其他方式)。

关于linux - Inkscape 0.92.2编译: links with two libMagick versions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49166467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com