Вчера я разрабатывал приложение Qt4, и внезапно, программа будет segfault на запуске. Я решил обновить до 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
покажите то же в отладчике.
Что я попробовал
Я могу сказать, что это - что-то, чтобы сделать с Qt4 и не любой другой спокойной версией, а именно, Qt5, потому что моя программа, выполняющая Qt5, работает правильно и любые другие приложения Qt5 - также.
Я запускаю Ubuntu 17.04.
Править: В данный момент я полностью удаляю все libqt4 библиотеки, вижу, становлюсь ли я удачливым.
РЕДАКТИРОВАНИЕ 2: Это работало.
Полное удаление библиотек sudo apt-get remove libqt4*
и повторная установка sudo apt-get install libqt4*
работали.
Похоже, что это отличается от sudo apt-get install --reinstall
. Я до сих пор не знаю причину проблемы.