《QT5 应用程序发布环境构建指南》由会员分享,可在线阅读,更多相关《QT5 应用程序发布环境构建指南(2页珍藏版)》请在金锄头文库上搜索。
1、QT5 应用程序发布环境构建指南1. QT5 应用程序发布结构由 QT5 开始引入了 QPA(QT 平台抽象层)的概念。在 linux 环境下缺省抽象平台使用的是 xcb(X protocol C-language Binding) 。运行 QT 编写的应用程序,需要使用到 QT5 的基本库和对应平台下的插件库。一个GUI 程序 analogclock 的发布目录和相关说明如下所示:ANALOGCLOCK analogclock /可执行应用程序libs /QT 应用程序使用到的基本库目录,运行时需要将该目录所在路径加入LD_LIBRARY_PATH /环境变量中。 libQt5Core.so
2、.5 /对 libQt5Core.so.5.2.1 的链接文件 libQt5Core.so.5.2.1 libQt5DBus.so.5 /对 libQt5DBus.so.5.2.1 的链接文件 libQt5DBus.so.5.2.1 libQt5Gui.so.5 /对 libQt5Gui.so.5.2.1 的链接文件 libQt5Gui.so.5.2.1platforms /QT 应用程序使用到的平台插件库目录,目录名一定要使用“platforms ”libqlinuxfb.solibqminimal.solibqoffscreen.solibqxcb.so2 QT5 应用程序运行常见问题对于
3、 QT 的 GUI 应用程序,在 linux 下常见的一个问题是执行时显示系统的 xcb 平台插件无法加载,一般显示如下错误:Failed to load platform plugin xcb. Available platforms are: linuxfb minimal xcb 以 ubuntu 操作系统为例,出现该错误时可以使用 ldd 命令查看一些 libqxcb.so 所引用的动态库有哪些没有找到。如在 NVR 环境上出现该错误后,使用“ldd libqxcb.so”命令查看后的结果如下:linux-gate.so.1 = (0xb7718000)libX11-xcb.so.1
4、= /usr/lib/i386-linux-gnu/libX11-xcb.so.1 (0xb7628000)libXi.so.6 = /usr/lib/i386-linux-gnu/libXi.so.6 (0xb7618000)libdl.so.2 = /lib/i386-linux-gnu/libdl.so.2 (0xb7612000)libdbus-1.so.3 = /lib/i386-linux-gnu/libdbus-1.so.3 (0xb75c9000)libxcb.so.1 = /usr/lib/i386-linux-gnu/libxcb.so.1 (0xb75a8000)libf
5、ontconfig.so.1 = not foundlibfreetype.so.6 = /usr/lib/i386-linux-gnu/libfreetype.so.6 (0xb750e000)libgthread-2.0.so.0 = /usr/lib/i386-linux-gnu/libgthread-2.0.so.0 (0xb750a000)librt.so.1 = /lib/i386-linux-gnu/librt.so.1 (0xb7501000)libglib-2.0.so.0 = /lib/i386-linux-gnu/libglib-2.0.so.0 (0xb7408000)
6、libXrender.so.1 = /usr/lib/i386-linux-gnu/libXrender.so.1 (0xb73fe000)libXext.so.6 = /usr/lib/i386-linux-gnu/libXext.so.6 (0xb73ec000)libX11.so.6 = /usr/lib/i386-linux-gnu/libX11.so.6 (0xb72b7000)libQt5DBus.so.5 = not foundlibQt5Gui.so.5 = not foundlibQt5Core.so.5 = not foundlibGL.so.1 = /opt/lib/li
7、bGL.so.1 (0xb7252000)libpthread.so.0 = /lib/i386-linux-gnu/libpthread.so.0 (0xb7236000)libstdc+.so.6 = /usr/lib/i386-linux-gnu/libstdc+.so.6 (0xb7151000)libm.so.6 = /lib/i386-linux-gnu/libm.so.6 (0xb7125000)libgcc_s.so.1 = /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7107000)libc.so.6 = /lib/i386-linux-gnu
8、/libc.so.6 (0xb6f5e000)/lib/ld-linux.so.2 (0xb7719000)libXau.so.6 = /usr/lib/i386-linux-gnu/libXau.so.6 (0xb6f59000)libXdmcp.so.6 = /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xb6f52000)libz.so.1 = /lib/i386-linux-gnu/libz.so.1 (0xb6f3c000)libpcre.so.3 = /lib/i386-linux-gnu/libpcre.so.3 (0xb6f00000)libg
9、lapi.so.0 = /opt/lib/libglapi.so.0 (0xb6ee1000)libXdamage.so.1 = /usr/lib/i386-linux-gnu/libXdamage.so.1 (0xb6edc000)libXfixes.so.3 = /usr/lib/i386-linux-gnu/libXfixes.so.3 (0xb6ed6000)libxcb-glx.so.0 = /usr/lib/i386-linux-gnu/libxcb-glx.so.0 (0xb6ebe000)libdrm.so.2 = /opt/lib/libdrm.so.2 (0xb6eb100
10、0)libQt5Core.so.5, libQt5DBus.so.5, libQt5Gui.so.5 这三个动态库没有找到的原因在于未将这三个库所在目录的路径加入 LD_LIBRARY_PATH 环境变量中,加入之后则这三个库被找到。libfontconfig.so.1 这个库没有被找到则是因为系统中没有安装对应的包。通过“”网站可以找到该库对应的包为 libfontconfig1。在联网环境下,可以使用“sudo apt-get install libfontconfig1”命令安装该包。在离线环境下,可以在“”网站上下载 libfontconfig1 和其依赖包的相关文件,在离线环境下使用“dpkg”命令安装。