统信Linux系统QT安装QWebengine及程序打包发布

7 篇文章 0 订阅

本次打包的QT主程序为QWebEngine模块编写的浏览器
 

1.安装qt


在qt官网或者镜像网站下载qt安装程序。https://download.qt.io/
比如我的电脑是x86_64的,系统是linux,所以下载


实际上由于我的电脑可以上网,并且源中就有qt,所以执行命令

 
sudo apt -y update 

sudo apt -y install qtcreator qt5-default qtdeclarative5-dev build-essential g++ cmake

然后等待安装完毕。
同时由于使用了webengine模块,需要安装对应的模块
执行命令
sudo apt-get install qt5webengine-dev进行安装
然而我的源里没有qt5webengine-dev
于是在debian的应用安装包的网站直接找webengine的deb包。
http://ftp.de.debian.org/debian/pool/main/q/
或者搜索qt5webengine-dev找到对应的安装包。下载后放到系统中安装。
在安装QWebengine模块前需要先安装qtmultimedia
还是在这里下载:http://ftp.de.debian.org/debian/pool/main/q/qtmultimedia-opensource-src/
之后就可以在qtcreator里愉快的编程了

2.程序打包依赖提取:Linuxdeployqt

应用程序编写完成后,就要根据程序的依赖来进行打包,首先需要整理好程序需要的环境和依赖。这里选择linuxdeployqt来进行打包。

首先在https://github.com/probonopd/linuxdeployqt/releases下载了可执行文件linuxdeployqt-x86_64.AppImage。

然后终端输入vim ~/.bashrc命令,修改 .bashrc 文件,加上qt安装的路径:


#add QT ENV
export PATH=/home/zlkj/technology/5.12.7/gcc_64/bin:$PATH
export LD_LIBRARY_PATH=/home/zlkj/technology/5.12.7/gcc_64/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=/home/zlkj/technology/5.12.7/gcc_64/plugins:$QT_PLUGIN_PATH
export QML2_IMPORT_PATH=/home/zlkj/technology/5.12.7/gcc_64/qml:$QML2_IMPORT_PATH

我这里安装都是默认装到系统路径,所以不用配置上面的qt路径,在系统中就可以找到qt文件。

新建一个文件夹,/Test。然后将程序放在文件夹中。将可执行文件拷贝到该文件夹并使用chmod -x linuxdeployqt-x86_64.AppImage赋予可执行权限。

执行:./linuxdeployqt-x86_64.AppImage app(程序名) -appimage

报错了:

这个打包程序要求glibc的版本要小于等于2.7,我的版本是2.9

于是下载了linuxdeployqt的源码包:https://github.com/probonopd/linuxdeployqt

打开路径tools/linuxdeployqt/main.cpp把glibc限制的这一块注释掉:

​
// openSUSE Leap 15.0 uses glibc 2.26 and is used on OBS

// Ubuntu Xenial (16.04) uses glibc 2.23

// Ubuntu Bionic (18.04) uses glibc 2.27

/if (strverscmp (glcv, "2.28") >= 0) {qInfo() Latest continuous linuxdeployqt build does not work on Ubuntu 16.04 LTS and openSUSE Leap 15.0 · Issue #340 · probonopd/linuxdeployqt · GitHub";return 1;}/

​

同时可以看到对于这块的说明:不检查glibc的话,可能会导致生成的映射程序、文件夹等在较老的系统中不起作用

注:如果应用程序要放在各种不同的Linux环境中,最好还是在glibc版本较低的系统中打包,如果目标系统的glibc不支持打包的系统的glibc版本,将无法运行。

查看glibc版本的方法:终端输入ldd -version

保存后,来到最外层cmakelists.txt这一层。执行cmake .,生成Makefile,执行make,生成程序。

然后提示了git的错误(这个错误好像没啥影响)。

好吧,又git clone了一下源码,重新注释,cmake,make。生成成功。

将生成成功的程序拷贝到/Test文件夹下,执行./linuxdeployqt-x86_64.AppImage app(程序名) -appimage

没有glibc的报错了。报了个Desktop的错误,这个可以忽略,后面打包才会用到。

执行完之后看看提取的文件。就多了个lib文件夹,打开文件夹里面只有孤零零的一个动态库:libqwebenginecore.so

没有详细查找问题原因。注释代码时发现linuxdeployqt有一个参数:

可以用来忽略glibc版本的错误。

又拷贝了刚开始下载的执行程序。执行./linuxdeployqt-x86_64.AppImage app(程序名) -appimage。

结果:

提取了很多文件。

需要注意的是,他只会提取程序依赖的静态加载的库,如果是动态加载的库以及动态加载库的依赖库,是无法提取到的。

此时可以对动态加载的库也使用linuxdeployqt来提取下依赖文件

提取到的依赖库都被拷贝到了lib文件夹。同时app程序指向的库也被处理到了lib文件夹下。

将程序动态加载的库根据代码中动态加载的路径放置好。执行程序。

报错:

好像是webengine中依赖的用来解析域名等的库,将计算机中的nss文件夹直接全部拷贝到此目录的lib下。运行./AppRun,程序执行成功,浏览器弹出。

3.打包

参考debian文件打包

Linux制作deb格式安装包教程 - 掘金

想深入了解可以阅读Debian 新维护者手册

https://www.debian.org/doc/manuals/maint-guide/index.zh-cn.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值