Linux部署QWebEngineView程序需要拖家带口的东西
2021/10/29 7:09:43
本文主要是介绍Linux部署QWebEngineView程序需要拖家带口的东西,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Qt的官方文档 Deploying Qt WebEngine Applications 里笼统地写了:
When manually deploying applications that depend on Qt WebEngine, all the files that are required to run the application have to be included: libraries, QML imports, plugins, and translations.
...
When manually deploying applications that depend on Qt WebEngine, the following files might have to be deployed:
- Libraries
- QML imports
- Qt WebEngine process
- Resources
- Translations
- Audio and video codecs
但问题是,到底哪些“libraries, QML imports, plugins, and translations.”和“Qt WebEngine process、Resources、Audio and video codecs”需要发布呢?以及发布到哪里呢?
库
用ldd
查QWebEngineView
的依赖,并排除掉/lib64
下的系统库:
ldd libQt5WebEngineWidgets.so.5 | grep -v -E "\s/lib64" | cut -d \ -f 3 | sort -u /opt/lib/./libdbus-1.so.3 /opt/lib/./libicudata.so.56 /opt/lib/./libicui18n.so.56 /opt/lib/./libicuuc.so.56 /opt/lib/./libQt5Core.so.5 /opt/lib/./libQt5Gui.so.5 /opt/lib/./libQt5Network.so.5 /opt/lib/./libQt5Positioning.so.5 /opt/lib/./libQt5PrintSupport.so.5 /opt/lib/./libQt5Qml.so.5 /opt/lib/./libQt5Quick.so.5 /opt/lib/./libQt5QuickWidgets.so.5 /opt/lib/./libQt5WebChannel.so.5 /opt/lib/./libQt5WebEngineCore.so.5 /opt/lib/./libQt5Widgets.so.5
这一大坨。其中需要libdbus-1.so.3
是笔者用的Linux发行版(系统等价于CentOS 7.3,内核是3.10.0)上自带的libdbus-1.so.3.7.4
太旧,参考文献1中给的解决方法是
需要下载dbus-1.13.10,编译安装后将库文件复制到Qt的运行库目录下
不过笔者没有按此文建议放在QtCreator/lib/Qt/lib
下,而是放在$QTDIR/lib
下。如果读者的操作系统版本够高,应该可以不需要这玩意。
QML imports
笔者是全C++开发,没有用到QML,此项不明。另一方面可以说明如果不用QML的话,无需关心这部分的部署可以略过。
plugins(包括Audio and video codecs)
需要将$QTDIR/plugins/
下面以下文件保持目录结构地复制到执行文件同位置(比如执行文件在myDir/bin,则bearer目录也放到myDir/bin,或者用API改库搜索路径,见下文)
- bearer/libqnmbearer.so
- bearer/libqconnmanbearer.so
- bearer/libqgenericbearer.so
- imageformats/libqico.so
- imageformats/libqicns.so
- imageformats/libqwbmp.so
- imageformats/libqjpeg.so
- imageformats/libqgif.so
- imageformats/libqtga.so
- imageformats/libqtiff.so
- imageformats/libqwebp.so
- platforms/libqxcb.so
- platforminputcontexts/libcomposeplatforminputcontextplugin.so
- platformthemes/libqgtk3.so
- xcbglintegrations/libqxcb-glx-integration.so
此外为了让Qt插件系统运行起来,以及QWebEngineVew
需要的OpenGL运行起来,还需要$QTDIR/lib
下的libQt5DBus.so.5
,libQt5XcbQpa.so.5
,libQt5EglFSDeviceIntegration.so.5
这三个库。
translations
$QTDIR/translations/qtwebengine*
,包括一堆.qm和一个qtwebengine_locales目录,复制到执行文件同位置。
Qt WebEngine process
$QTDIR/libexec/QtWebEngineProcess
,复制到执行文件同位置。
Resources
$QTDIR/resources
下的icudtl.dat和qtwebengine*.pak,复制到执行文件同位置。
执行文件查找上述文件的搜索目录
Qt框架默认是去编译时的Qt路径里找这些东西的,如果失败则会尝试程序启动路径。如果希望不要出现查找问题,可以按官方文档 Qt for Linux/X11 - Deployment 的建议,用QApplication::addLibraryPath()
或QApplication::setLibraryPaths()
调整搜索路径,此处不再赘述。
参考资料
- codeaftercode. 解决中标麒麟7安装Qt5.12.1后无法启动的问题[LIBDBUS_1_3 not defined][FT_Get_Font_Format] [EB/OL]. https://blog.csdn.net/codeaftercode/article/details/107584151
这篇关于Linux部署QWebEngineView程序需要拖家带口的东西的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法