linuxdeployqt
序言
网上其实都有很多,但是都或多或少有些不全,版本也是不讲明适合怎么样的,所以我就写出来仅供参考。
环境
Linux Mint20.3
Qt5.15.2
一、下载linuxdeployqt
此处共两个方法下载,一个是下载网上编译好的包,另一个是下载源码然后自行编译安装,由于本人经常很难登录到GitHub,所以我也一并把勉强能登录的方法写下来。
下载开发者边车 DevSidecar
如果有人和我一样很难登录上GitHub的话,可以下载开发者边车,这个软件能够让你登的上去。
下载网上编译好的包
linuxdeployqt下载地址:https://github.com/probonopd/linuxdeployqt/releases
但要注意的一点是,如果Linux的环境glibc版本不匹配,会引发报错的,详细报什么错可以看下去。
如果你还没安装Linux环境或者不知道自己匹不匹配,可以看下这位总结出来的Linux发行版的glibc版本
下载源码自行编译
如果你看了上文,发现glibc版本不匹配,所以用不了上面的方法,可以看这个方法,其实这个方法也和掩耳盗铃差不多。
linuxdeployqt源码下载地址:https://github.com/probonopd/linuxdeployqt.git
下载下来ZIP压缩包即可。
放进Linux里
一般我们开发Linux的都是用的虚拟机开发吧,只要将包放到Linux的划定的共享文件夹里,然后从中复制/剪切进去放到随便放个文件夹里即可。
上面的菜单栏中:虚拟机->设置->选项
二、配置linuxdeployqt
配置Qt的环境变量,便于打包时寻找到地址
输入指令编辑环境变量
vi ~/.bashrc
在未进入输入模式前,按“shift+g”即可跳转最下方,然后填入下方的环境变量即可。
export QTDIR=/home/mrliang/WorkSoftware/Qt5.15/5.15.2/gcc_64
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PLUGIN_PATH=$QTDIR/plugins:$PLUGIN_PATH
export QML2_PATH=$QTDIR/qml:$QML2_PATH
注:上面的环境变量不全,如果打包时漏了,需自行复制模块包过去,或者找到对应环境变量再行编辑也可,最好能评论留言让我增添此处,谢谢。
.
已编译好的包配置
如果是第一个方法下载的,可以直接在包所在目录下按顺序输入即可。
sudo mv linuxdeployqt-continuous-x86_64.AppImage linuxdeployqt //重命名
sudo mv ./linuxdeployqt /usr/local/bin //方便任意文件夹里使用
chmod 777 linuxdeployqt //赋予权限
sudo linuxdeployqt --version //查询是否配置好
.
自行编译包的步骤
进入你放的解压缩后linuxdeployqt源码文件夹里(本人的Linux环境存在下图的选项,我可以直接提取出来,别的环境自行找教程解压缩吧)。
注:本人让其环境配置中文化了,非环境本身默认语言
再进入到里面的tools/linuxdeployqt/里
vi/vim/gedit都可以,打开main.cpp,注释掉下面的if项(大概200行左右),免得报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() << "ERROR: The host system is too new.";
qInfo() << "Please run on a system with a glibc version no newer than what comes with the oldest";
qInfo() << "currently still-supported mainstream distribution (Ubuntu Bionic), which is glibc 2.27.";
qInfo() << "This is so that the resulting bundle will work on most still-supported Linux distributions.";
qInfo() << "For more information, please see";
qInfo() << "https://github.com/probonopd/linuxdeployqt/issues/340";
return 1;
}*/
执行cmake
cmake CMakeLists.txt
make
此处如果报错的话,看下方。
还有一处问题,我怀疑是我下载的源码或者是环境变量漏了之类的原因吧,原因暂时不明,大概在51行处,这是用来输出linuxdeployqt版本的。
总是提示报错,但我怎么看都不像格式的问题,我又不清楚那些宏的定义,所以就退而求其次,一并注释掉吧。
version << "linuxdeployqt over" ;
/*<< LINUXDEPLOYQT_VERSION << " commit "
<< LINUXDEPLOYQT_GIT_COMMIT << "build "
<< BUILD_NUMBER << " built on " << BUILD_DATE;*/
当make成功后,会生成一个linuxdeployqt的程序文件,这个就和上面的编译后的文件一样。
继续输入:
sudo chmod 777 linuxdeployqt //赋予权限
sudo cp -p linuxdeployqt /usr/local/bin/ //方便任意文件夹里使用
sudo linuxdeployqt --version //输出linuxdeployqt over
三、其余软件的安装配置
linuxdeployqt其实有不同的打包方式,但现在按下不表,感兴趣可自行查询了解。
本文是常用的-appimage方式
patchelf
方法①:
sudo apt-get install patchelf
方法②
wget https://nixos.org/releases/patchelf/patchelf-0.9/patchelf-0.9.tar.bz2
tar xf patchelf-0.9.tar.bz2
cd patchelf-0.9/
./configure
make
sudo make install
Appimagetool
方法①:
Appimagetool下载地址:
https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
在Linux的Appimagetool当前目录下输入:
sudo mv appimagetool-x86_64.AppImage appimagetool
chmod 777 appimagetool
sudo./appimagetool /usr/local/bin
方法②
sudo wget -c "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" -O /usr/local/bin/appimagetool
sudo chmod a+x /usr/local/bin/appimagetool
当上面的都安装好后,分别输入
which linuxdeployqt
which patchelf
which Appimagetool
返回路径说明存在,安装成功。
四、linuxdeployqt打包
将release下编译出exe文件复制到一个新文件夹里,然后在该文件夹目录的命令行中输入
sudo linuxdeployqt 软件名.exe -appimage
.
完…本文主要是linuxdeployqt的环境配置,其余的需自行搜集丰富。
主要参考文章:
①https://blog.youkuaiyun.com/skl5879166/article/details/124247975
②https://blog.youkuaiyun.com/weixin_44713381/article/details/107894339