重定位错误 libqt5 和 libpng16

重定位错误 libqt5 和 libpng16

我最近从 16.04 升级到了 18.04,在尝试启动 qjack 时出现此错误

qjackctl: relocation error: /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5: symbol png_set_option version PNG16_0 not defined in file libpng16.so.16 with link time reference

所以我尝试重新安装 qjack、所有 qt5 库和 libpng16 库,但无济于事。所以我更深入地研究了有问题的 libpng,并检查了符号。

readelf -Ws /usr/lib/x86_64-linux-gnu/libpng16.so.16 | grep png_set_option
    84: 0000000000008e00    89 FUNC    GLOBAL DEFAULT   13 png_set_option@@PNG16_0

那么 png_set_option 实际上是为 PNG16_0 定义的,不是吗?我真的不知道该怎么做才能纠正这个问题。

答案1

所以我找到了 libpng16 的不同版本

locate libpng16.so.16
/home/julien/Software/Sen2Cor-2.4.0-Linux64/lib/libpng16.so.16
/home/julien/Software/Sen2Cor-2.4.0-Linux64/lib/libpng16.so.16.25.0
/home/julien/Software/VirtualGL/libpng-1.6.0/.libs/libpng16.so.16
/home/julien/Software/VirtualGL/libpng-1.6.0/.libs/libpng16.so.16.0.0
/opt/ardour4/lib/libpng16.so.16
/usr/lib/i386-linux-gnu/libpng16.so.16
/usr/lib/i386-linux-gnu/libpng16.so.16.34.0
/usr/lib/x86_64-linux-gnu/libpng16.so.16
/usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0
/usr/local/lib/libpng16.so.16
/usr/local/lib/libpng16.so.16.0.0
/usr/local/lib/libpng16.so.16.34.0
/usr/local/lib.bak/libpng16.so.16
/usr/local/lib.bak/libpng16.so.16.0.0
/usr/local/lib.bak/libpng16.so.16.34.0

我试图找到没有正确符号的库

/usr/lib/x86_64-linux-gnu$ nm -D /usr/lib/x86_64-linux-gnu/libpng16.so.16 | grep png_set_option
0000000000008e00 T png_set_option

这不会返回任何内容(符号缺失)

nm -D /usr/local/lib/libpng16.so.16 | grep png_set_option

因此,我从坏库 /usr/local/lib/libpng16.so.16 到好库 /usr/lib/x86_64-linux-gnu/libpng16.so.16 建立了一个符号链接

sudo ln -sf /usr/local/lib/libpng16.so.16 /usr/lib/x86_64-linux-gnu/libpng16.so.16

希望这能有所帮助,不幸的是,更新时可能会损坏它。不要忘记在更新之前备份 /usr/local/lib/,以防万一

sudo cp -R /usr/local/lib /usr/local/lib.bak

这个解决方案的灵感来自于此邮政

相关内容