Ошибка перемещения 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

Поэтому я сделал символическую ссылку с плохой lib /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

Это решение вдохновлено этим постом

Другие вопросы по тегам