OpenMV引出的QT排错
参考:https://blog.csdn.net/LOVEmy134611/article/details/107212845
今天在 Ubuntu 上更新了 OpenMV IDE 后,突然发现软件打不开了;
Linux 用久了,第一个反应自然是:用终端启动看看错误信息;
在终端中进入 OpenMV 安装目录,执行启动脚本:
1 | ./openmvide.sh |
果不其然,终端中输出了一堆报错信息,看起来像是 Qt 插件加载失败的问题:

看起来像是QT的问题,那就进一步查看更详细的信息吧;
开启 Qt 插件调试模式
为了获取更详细的错误信息,我们可以设置环境变量来启用 Qt 插件的调试输出:
1 | export QT_DEBUG_PLUGINS=1 |
再次运行后,输出了类似这样的提示信息:

这里明确指出:Qt 无法加载 libqxcb.so 插件,是因为它依赖的某些库找不到;
检查插件依赖库
我们前往提示中指向的路径,查看该插件(libqxcb.so)所依赖的共享库:
1 | cd /home/time/Doc/1software/openmvide/lib/Qt/plugins/platforms/ |
能看到下面这样的结果:

可以看到,某些共享库(如 libxcb-xxx.so)提示为 not found,说明这些库在系统中尚未安装;
安装缺失依赖
这一步其实就是“缺啥补啥”;
对于大多数 Qt XCB 相关插件问题,可以尝试安装如下依赖包:
1 | sudo apt install libxcb-xinerama0 |
如果还有其他依赖缺失,终端里也会继续提示,然后我们继续安装即可,比如:
1 | sudo apt install libxkbcommon-x11-0 |
总之,看报错、查缺失、逐个安装,直到所有 ldd 输出的依赖都变成 => /usr/lib/… 而非 not found 为止
再次启动软件
重新运行 OpenMV IDE:
1 | ./openmvide.sh |
此时应该能够正常打开了;
总结
Qt 程序在 Linux 上偶尔会遇到因为环境或依赖缺失导致的启动问题,尤其是那些 不使用系统 Qt、而是自己打包了一份 Qt 的软件;这类问题可以通过:
- 终端运行,查看错误信息;
- 启用 QT_DEBUG_PLUGINS=1 环境变量,获取详细调试日志;
- ldd 检查缺失的动态链接库;
- apt install 安装对应依赖;
来一步步定位并解决;
虽然过程有点繁琐,但也算是一次熟悉 Qt 插件系统和 Linux 动态链接机制的好机会;
Comments
Comment plugin failed to load
Loading comment plugin
💡 请正确填写您的邮箱,以确保能接收到来自本博客的评论回复通知~(*^▽^*)