我编写了使用Qt5的linux应用程序
但是當我尝试在没有安装Qt SDK的Linux上启动它时,控制台中的输出是:
无法加载平台插件“xcb” 可用的平台是:
我怎样才能解决这个问题? 可能是我需偠复制一些插件文件当我使用安装了Qt5的ubuntu,但是我重命名Qt目录时会出现同样的问题。 所以它使用Qt目录中的一些文件...
更新:当我在app dir“platforms”攵件夹中创建文件libqxcb.so时,应用程序仍然无法启动但错误消息更改:
无法加载平台插件“xcb”。 可用的平台是:
怎么会发生这种情况 平台插件如何可用但无法加载?
如前所述您需要确保在部署应用程序时安装平台插件。 根据您希望如何部署内容有两种方法可以告诉您的应鼡程序平台插件(例如,platforms / plugins / libqxcb.so)在运行时可能适合您的位置
另一个选项,我更喜欢在与可执行文件相同的目录中创建qt.conf文件 其内容如下:
有關这方面的更多信息可以在这里和使用qt.conf找到
我尝试在Ubuntu 16.04 LTS上使用Qt 5.7编译我的二进制文件,其中预装了Qt 5.5 预计它没有按原样运作。
首先我按照此處的建议检查了二进制本身QT_DEBUG_PLUGINS=1
,并且满足了所有“未找到”的依赖关系 然后引发了这个臭名昭着的LD_LIBRARY_PATH=.
错误。
在Linux上应该做些什么来解决这个问題
首先您应该创建二进制文件所在的QT_DEBUG_PLUGINS=1
目录,因为它是Qt查找XCB库的位置 那里复制LD_LIBRARY_PATH=.
。 我想知道为什么其他答案的作者没有提到这一点
然后伱可能想用QT_DEBUG_PLUGINS=1
环境变量设置运行你的二进制文件来检查LD_LIBRARY_PATH=.
的不满意的依赖关系。 (根据接受的答案中的建议您也可以使用ldd
)。
命令输出可能洳下所示:
请注意失败的QT_DEBUG_PLUGINS=1
库 将它复制到您的库路径,在我的情况下它是我的二进制文件所在的目录(因此LD_LIBRARY_PATH=.
)。 重复此过程直到满足所有依赖关系。
从版本5开始Qt使用平台抽象系统(QPA)从底层平台进行抽象。
每个平台的实现都是由插件提供的 对于X11,它是XCB插件 有关依賴关系的更多信息,请参阅Qt for X11要求
Ubuntu 16.04 64bit。我明显没有理由得到了这个问题 我在VideoLan实例上观看电影前一天晚上,那天晚上我想用VideoLan观看另一部电影 由于错误进入问题,VLC只是不想运行我谷歌了一下,我发现它解决了我的问题的解决方案:从现在开始VLC就像以前一样可以运行。 解决方案就是这个命令:
我无法解释它的后果但我知道它会产生一些缺失的符号链接。
我试过每个答案的主要部分但没有用。 最后为我修複的是导出以下环境变量:
我使用“ldd app”找出所需的库是什么然后复制它们到Ubuntu的客人。虽然命令行可执行文件“app”工作正常但基于GUI的可執行文件崩溃了,给出了“无法加载平台插件”xcb“错误我检查了ldd for libxcb.so,但这也没有丢失依赖项
问题似乎是,虽然我复制了所有正确的库泹我偶然也复制了已经存在于客户系统的库..这意味着(a)他们没有必要首先复制它们,(b)更糟糕 复制它们会在安装库之间产生不兼容性。更糟糕的是就像我说的那样,ldd无法检测到它们
解决方案? 确保复制ldd缺少的库绝对没有额外的库。
他们是libxcb-render.so.0
,所以我通过使用这个库咹装缺少的包解决了我的问题:
我喜欢qt.conf
的解决方案
将qt.conf
放在可执行文件附近,并显示下一行:
这可能会有所帮助 我正在使用Ubuntu 18.04,当我使用ppa方法安装Krita时 我收到了这个错误:
此应用程序无法启动,因为它无法在“”中找到或加载Qt平台插件“xcb”
重新安装应用程序可能会解决此問题。 中止
我尝试了在此主题和其他网站中找到的所有解决方案但没有成功。
最后我找到了一篇文章,作者提到可以使用这个简单的命令激活qt5的调试:
添加此命令后我再次运行krita我得到了同样的错误,现在我知道原因
libxcb-xinerama.so.0:无法打开共享对象文件:没有这样的文件或目录。
此错误会阻止“xcb”正确加载 所以解决方案是安装`libxcb-xinerama.so.0'对吗?但是当我运行命令时:
我已经安装了lib。 所以我用了一个老把戏是的--reinstall
最后一个命令解决了我的问题
所以,我花了一天时间试图找出问题所在; 尝试了所有提议的解决方案但没有一个像安装xcb库或导出Qt插件文件夹。 建議使用cmake .. -DCMAKE_PREFIX_PATH=/home/username/Qt/5.11.1/gcc_64
来调试问题的解决方案并没有像我在答案中那样提供直接的洞察力 - 相反我在Qt5Core中获得了一些未解决的符号。
这给了我一个暗示:如果它试图使用不同Qt安装的不同文件怎么办 在我的机器上,我在cmake .. -DCMAKE_PREFIX_PATH=/home/username/Qt/5.11.1/gcc_64
中安装了标准版本并且我自己编译的项目中有一些本地版本(我在其他位置也有其他自定义工具包)。
每当我尝试使用任何套件(由Qt维护工具安装或由我自己构建)时我都会收到“xcb错误”。
我将所有Qt内容静態链接到我的开源项目的通用Linux版本 它让生活变得更轻松。 您只需要首先构建静态版本的Qt库 当然,由于许可问题这不能应用于封闭源軟件。 在Linux上部署Qt5应用程序目前有点问题因为例如Ubuntu 12.04在软件包存储库中没有Qt5库。
我有这个问题并且在预感中我从我的环境中删除了Qt Configs。即
嘫后我启动了qtcreator快捷键,它用机器的现有状态重新配置了自己 它不再记得我的项目在哪里,但这只是意味着我必须“第一次”再次浏览它們
但更重要的是,它构建了一组连贯的库路径因此我可以重新构建并运行我的项目可执行文件,而不会丢失xcb或qxcb库
它创造了它错过的苻号链接。 对QT有好处! 适合VLC !!