ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux部署QWebEngineView程序需要拖家带口的东西

2021-10-28 23:03:04  阅读:455  来源: 互联网

标签:opt Qt lib 拖家带口 so so.5 QWebEngineView Linux imageformats


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”需要发布呢?以及发布到哪里呢?

lddQWebEngineView的依赖,并排除掉/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()调整搜索路径,此处不再赘述。

参考资料

  1. codeaftercode. 解决中标麒麟7安装Qt5.12.1后无法启动的问题[LIBDBUS_1_3 not defined][FT_Get_Font_Format] [EB/OL]. https://blog.csdn.net/codeaftercode/article/details/107584151

标签:opt,Qt,lib,拖家带口,so,so.5,QWebEngineView,Linux,imageformats
来源: https://www.cnblogs.com/logischerweise/p/15478110.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有