Qt4 应用程序在启动时发生段错误

Qt4 应用程序在启动时发生段错误

昨天我正在开发一个 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,并且段错误在调试器中看起来相同。

(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 库,看看我是否会幸运。

编辑2: 有效。

答案1

完全删除库sudo apt-get remove libqt4*并再次安装sudo apt-get install libqt4*即可。

那个和 似乎有区别sudo apt-get install --reinstall。我仍然不知道问题的原因。

相关内容