Вчера я разрабатывал приложение Qt4, и внезапно программа будет работать при запуске. Я решил перейти на Qt5 и устранить проблему.
Однако я заметил, что все приложения Qt4, похоже, имеют такое же поведение. Примером является simplescreenrecorder.
$ ldd /usr/bin/simplescreenrecorder | grep Qt
libQtGui.so.4 => /usr/lib/x86_64-linux-gnu/libQtGui.so.4 (0x00007fd558703000)
libQtCore.so.4 => /usr/lib/x86_64-linux-gnu/libQtCore.so.4 (0x00007fd55820f000)
Я могу сказать, что это Qt из-за этого. Я только звонил в Qt4 в этой программе, а segfault выглядел одинаково в отладчике.
(gdb) run
Starting program: /usr/bin/simplescreenrecorder
Program received signal SIGSEGV, Segmentation fault.
elf_dynamic_do_Rela (skip_ifunc=<optimized out>, lazy=0, nrelative=<optimized out>, relsize=662856, reladdr=<optimized out>, map=0x7ffff7fbd908) at do-rel.h:112
112 do-rel.h: No such file or directory.
Оба примера приложения и simplescreenrecorder показывают то же самое в отладчике.
То, что я пробовал
Переустановка всех библиотек libqt4Я могу сказать, что это что-то связано с Qt4, а не с любой другой версией Qt, а именно Qt5 , потому что моя программа, работающая с Qt5, работает правильно, а также любые другие приложения Qt5.
Я запускаю Ubuntu 17.04.
То, что я пробовал : На данный момент я полностью удаляю все библиотеки libqt4, см., если мне повезет.
EDIT 2: Это сработало.
Полностью удалить libs sudo apt-get remove libqt4* и снова установить sudo apt-get install libqt4*.
Между этим и sudo apt-get install --reinstall существует другое отличие. Я до сих пор не знаю причину проблемы.
Полностью удалить libs sudo apt-get remove libqt4* и снова установить sudo apt-get install libqt4*.
Между этим и sudo apt-get install --reinstall существует другое отличие. Я до сих пор не знаю причину проблемы.
Полностью удалить libs sudo apt-get remove libqt4* и снова установить sudo apt-get install libqt4*.
Между этим и sudo apt-get install --reinstall существует другое отличие. Я до сих пор не знаю причину проблемы.