Ошибка перемещения 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
Это решение вдохновлено этим постом