02_Linux下Qt程序打包及应用图标

一、前言

程序打包后,可以让程序在没有安装QT环境的服务器上运行。

在Windows下,使用windeployqt进行打包

在Linux下,使用linuxdeployqt进行打包

二、linuxdeployqt下载安装

Releases · probonopd/linuxdeployqthttps://github.com/probonopd/linuxdeployqt/releases

image

安装步骤如下:

mv linuxdeployqt-6-x86_64.AppImage linuxdeployqt    # 为了方便使用,将名字改短一点
chmod 777 linuxdeployqt    # 修改权限
mv linuxdeployqt /usr/local/bin   # 把linuxdeployqt可执行文件放到/usr/local/bin目录下,方便在任何目录都可以访问
linuxdeployqt --version   # 测试是否安装成功

image

三、Qt环境变量配置

工具会根据生成的可执行文件,自动搜索依赖,所以我们需要确保Qt库的相关路径设置到环境变量中,这样工具在搜索时才能找到,并拷贝它们。

另外拷贝文件,对环境变量的使用,不想要重启系统那么麻烦,所以我们修改.bashrc文件,仅对当前用户永久有效。

#在.bashrc文件末尾,追加内容如下
#其中,/opt/Qt5.13.0/5.13.0/gcc_64是本次测试环境Qt安装目录,大家根据自己的情况替换。
export PATH=/opt/Qt5.13.0/5.13.0/gcc_64/bin:$PATH
export LIB_PATH=/opt/Qt5.13.0/5.13.0/gcc_64/lib:$LIB_PATH
export PLUGIN_PATH=/opt/Qt5.13.0/5.13.0/gcc_64/plugins:$PLUGIN_PATH
export QML2_PATH=/opt/Qt5.13.0/5.13.0/gcc_64/qml:$QML2_PATH

然后,对环境变量测试下,是否设置正确。如下:

qmake -v

四、打包Qt程序

1.准备Qt可执行文件

将项目Realse目录中的可执行文件,复制到一个新建文件夹中。可使用ldd查看Qt程序库依赖。如果某个库输出是not found,则说明ldd找不到这个库,需要将库复制到/usr/local/lib目录下。

image

2.准备桌面应用图标

然后在文件夹下创建一个 .desktop 后缀的文件,这是桌面应用配置文件,在放一个图片用来当应用图标。
(详细的 desktop 文件的编写可以参考官方描述 UnityLaunchersAndDesktopFiles – Community Help Wiki

[Desktop Entry]
Type=Application
Name=这里填应用的名字
Comment=这里描述该程序功能
Exec=这里是可执行文件的路径。仅当可执行文件不在 $PATH 变量中指定的任何路径中时,才必须使用可执行文件的完整路径。例如,路径 /usr/bin 内的任何文件都不需要在 Exec 字段中指定其完整路径,而只需指定其文件名即可,或者在当前路径下也不用。
Icon=这里是应用图标。例如,目录 /usr/share/pixmaps 下的所有图标不需要指定其完整路径,但不需要指定不带扩展名的文件名。例如,如果图标文件是 /usr/share/pixmaps/wallch.png,则图标字段应该只是“wallch”。或者在当前路径下也不用。所有其他图标都应指定其完整路径。
Categories=Application;

使用以下命令,来检验desktop文件的有效性:

desktop-file-validate /path/to/your/application.desktop

3.打包成appImage

linuxdeployqt hello -appimage

打包完成后,文件如下图所示。将其在其它linux环境中也能正常运行。

image

五、遇到的问题

1.下载的linuxdeployqt版本太新

linuxdeployqt  (commit 8cb9438), build 67 built on 2024-07-09 18:22:04 UTC ERROR: The host system is too new. 
Please run on a system with a glibc version no newer than what comes with the oldest currently supported mainstream distribution (Ubuntu Focal Fossa), which is glibc 2.31. 
This is so that the resulting bundle will work on most still-supported Linux distributions. For more information, please see https://github.com/probonopd/linuxdeployqt/issues/340

解决办法:下载更旧的版本,即可解决!

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享