如果这是错误的部分,我深表歉意 - 请根据需要移动...
一些背景: 我有一个我构建的 Qt 4.8.4 应用程序,它运行得非常好……对我来说。我使用 VNC 连接到 Linux Redhat 机器。
但是,当将该应用程序提供给同事使用时,他无法在不出现段错误的情况下运行它:基本上,他会尝试选中其中一个复选框,应用程序将出现段错误并使用 gdb ,回溯显示:
#0 0x00000000 in ?? ()
#1 0xb7a2b9e8 in QGtkStyle::drawComplexControl () from /usr/local/Trolltech/Qt-4.8.4/lib/libQtGui.so.4
#2 0xb7b315b5 in QScrollBar::paintEvent () from /usr/local/Trolltech/Qt-4.8.4/lib/libQtGui.so.4
#3 0xb7682fd4 in QWidget::event () from /usr/local/Trolltech/Qt-4.8.4/lib/libQtGui.so.4
...
需要注意的几点:
- 另一个用户:他和我在同一个 Linux Redhat 机器上,只是登录方式不同。他有完全相同的
PATH
,QTDIR
,QTLIB
,QTBIN
,QTINC
, &QTMAKESPEC
和我一样。我们都在使用 bash shell。 - 我在我的应用程序中进行了一些调试,以比较 qt 已知的系统环境,它们是相同的(除了用户名/登录信息之外)。
我一直在用我的头敲 table 试图解决这个问题。
好吧,我决定随机做一些事情,然后我运行了已安装的 Qt Designer……它无法启动。 有趣...
于是查了一下,菜单里的Qt Designer是针对Qt-3.3的,也安装了。那个,或者我读过的,应该不是问题。
然后我尝试启动与 Qt 4.8.4 打包在一起的 Qt Designer,但令人惊讶的是它也无法启动。如果我尝试从终端启动它,我会得到“Segmentation Fault”输出。 (进一步调查发现Qt Assistant也在做同样的事情...)
通过 gdb 运行设计器(对于 qt 4.8.4),回溯显示:
#0 0x00000000 in ?? ()
#1 0xb6f049e8 in QGtkStyle::drawComplexControl() from /usr/local/Trolltech/Qt-4.8.4/lib/libQtGui.so.4
#2 0xb700a5b5 in QScrollBar::paintEvent() from /usr/local/Trolltech/Qt-4.8.4/lib/libQtGui.so.4
#3 0xb6b5bfd4 in QWidget::event () from /usr/local/Trolltech/Qt-4.8.4/lib/libQtGui.so.4
设计者的回溯与我的应用程序的回溯相同!
...我不知道这对我的应用程序/其他用户意味着什么。
我最初想重新安装 Qt,但如果它对我来说工作正常,那将如何解决问题?
最佳答案
所以对于遇到类似问题的任何人,我相信我已经找到了答案,至少在这种情况下是这样:
在比较了我的主目录和其他用户的主目录之后,我发现了两个最让我感兴趣的文件夹:
.config/
.qt/
事实证明,其他用户丢失 .qt 文件夹!在我的 .config 中,我有一个他没有的“Trolltech”文件夹。所以我将我的复制到他的并在尝试再次运行之前注意到最后一件事......
在 .config/下,有一个名为 Trolltech.conf
的文件 - 猜猜是什么:他的与我的截然不同:我的 Trolltech 没有为 Qt 4.8.4 设置所有内容。 conf文件正在设置。所以我也复制了它。
瞧瞧——Qt Designer(适用于 3.3 和 4.8.4)、Qt Assistant 和我的应用程序现在都运行良好。 :D
关于linux - Qt Designer 和 Qt Assistant 启动时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15662123/