您现在的位置是:主页 > 移动手游 >

qt下载如何打包一个QT程序(Windows和linux)(linux是windows系统)

2021-02-24 11:28:45 作者: 掌钛游侠网

如何打包一个QT程序Windows系统下通过windeployqt工具1.以release模式运行程序

如何打包一个QT程序(Windows和linux)(linux是windows系统)

2.将release文件夹中的可执行文件复制到一个路径下,推荐桌面3.在桌面新建一个文件夹,并将刚刚的可执行文件放进去4.运行windeployqt.exe程序

如何打包一个QT程序(Windows和linux)(linux是windows系统)

5.进入到刚刚新建的文件夹路径中6.执行命令windeployqt test.exe,其中test为可执行文件的文件名

如何打包一个QT程序(Windows和linux)(linux是windows系统)

7.等待执行完毕后,可以发现文件夹中多了运行程序所需要的dll

如何打包一个QT程序(Windows和linux)(linux是windows系统)

8.该文件夹打包,可以在其他电脑下运行Linux系统下通过linuxdeployqt工具1.以release模式运行同Windows一样以release模式运行QT程序,以生成可执行文件,即可以直接双击打开的文件,也可以通过右键属性来查看

如何打包一个QT程序(Windows和linux)(linux是windows系统)

shared library文件

如何打包一个QT程序(Windows和linux)(linux是windows系统)

如何打包一个QT程序(Windows和linux)(linux是windows系统)

executable文件

如何打包一个QT程序(Windows和linux)(linux是windows系统)

如何打包一个QT程序(Windows和linux)(linux是windows系统)

注意图标也是不一样的,如果是executable文件,则不需要下面一步的操作

如何打包一个QT程序(Windows和linux)(linux是windows系统)

2.针对release模式下编译出的文件是shared library文件,进行如下操作在.pro文件中添加如下代码

如何打包一个QT程序(Windows和linux)(linux是windows系统)

TEMPLATE = app #这生成一个exeQMAKE_LFLAGS += -no-pies添加好后记得执行qmake

如何打包一个QT程序(Windows和linux)(linux是windows系统)

如何打包一个QT程序(Windows和linux)(linux是windows系统)

3.新建一个文件夹,并将生成的可执行文件复制进去

这里文件夹的名字可以与可执行文件名字相同,方便辨认,我这里不做演示。

4.安装linuxdeployqt针对Qt,linuxdeployqt这个工具可以帮助我们快速打包Qt项目。在windows下对应的软件叫windowsdeployqt。

linuxdeployqt的github网址:

}

github上提供了两种安装linuxdeployqt的方法,分别是直接下载编译好的安装包安装,或者从源代码安装。两种方式都不难。 但是由于linuxdeployqt还没有发布Ubuntu18.04相应的版本,因此,Ubuntu18.04的用户最好是编译源代码安装,不然在用linuxdeployqt打包Qt项目的时候会报类似于操作系统版本过高的错误。

4.1下载linuxdeployqt可执行程序,上图第一项建议下载后修改文件名,将文件名修改为 linuxdeployqt。修改linuxdeployqt的权限,可以使用以下命令:sudo chmod a+x linuxdeployqt然后可以考虑将该文件拷贝到目录 /usr/local/bin/ 下,方便之后直接使用命令 linuxdeployqt。拷贝命令如下:sudo cp linuxdeployqt /usr/local/bin/4.2编译源代码安装linuxdeployqt针对操作系统是Ubuntu18.04及以上,目前需要通过源代码编译安装linuxdeployqt,否则执行linuxdeployqt会出现一些报错信息:如主机系统过高等。

编译源代码安装的参考网址:参考网址}

我们默认已经安装好了g++、git等工具,如果没有的话得先安装。还需要安装 patchelf 工具。示例命令如下:

sudo apt-get -y install git g++ libgl1-mesa-devgit clone }

进入linuxdeployqt文件夹,命令如下:cd linuxdeployqt修改 tools/linuxdeployqt/main.cpp 源代码,注释掉源码中版本判断的语句,可以通过指令 gedit tools/linuxdeployqt/main.cpp 来修改源码:gedit tools/linuxdeployqt/main.cpp需要注释的代码如下:

// openSUSE Leap 15.0 uses glibc 2.26 and is used on OBS        /*if (strverscmp (glcv, "2.27") >= 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 (xenial), which is glibc 2.23.";            qInfo() << "This is so that the resulting bundle will work on most still-supported Linux distributions.";            qInfo() << "For more information, please see";            qInfo() << "}

终端输入gedit ~/.bashrc命令,修改 .bashrc 文件,在文件末尾追加以下内容,其中/opt/Qt5.9.9/5.9.9是我的Qt安装路径,大家要用自己的路径代替:

#add QT ENVexport PATH=/opt/Qt5.9.9/5.9.9/gcc_64/bin:$PATHexport LD_LIBRARY_PATH=/opt/Qt5.9.9/5.9.9/gcc_64/lib:$LD_LIBRARY_PATHexport QT_PLUGIN_PATH=/opt/Qt5.9.9/5.9.9/gcc_64/plugins:$QT_PLUGIN_PATHexport QML2_IMPORT_PATH=/opt/Qt5.9.9/5.9.9/gcc_64/qml:$QML2_IMPORT_PATH经测试只添加第一行命令也是可以的

双引号可以加也可以不加

最后要source一下使 ~/.bashrc 这个shell文件立即生效,而不必注销并重新登录。

$ source ~/.bashrc然后执行qmake -v

6.使用方法命令linuxdeployqt ~/path/to/project/application -appimage

示例:进入到之前用于存放可执行文件的新建文件夹中

cd /home/li/Desktop.qttestlinuxdeployqt untitled -appimage其中untitled为可执行文件,执行完就可以自动打包程序了。

AppRun相当于一个快捷方式。

在执行这条命令时可能会报如下错误:

Categories entry not found in desktop file.desktop file is missing a Categories= key12说的是在.desktop文件中少了一个属性Categories,所以我们需要在desktop文件中手动加入一行:

Categories=Application;7.在ubuntu 中添加qt 应用程序图标修改qt 目录下的desktop 文件。可以按照ubuntu 官方提示修改。 ubuntu desktop文件使用

}

#-- 全局安装(所有用户可用),将xxx.desktop 复制到/usr/share/applications  #-- 当前用户可用, 将xxx.desktop 复制到 ~/.local/share/applications 目录即可#--appName.desktop[Desktop Entry]Version=1.0 #app的版本Name=myQtApp #app的名字Comment= this app use for xxx #说明信息 Exec=/path/to/your/QtApp/myQtApp #app的执行路径,绝对路径Icon=/path/to/your/app_icon/myQtApp.png #icon 路径,绝对路径Terminal=false #是否在终端启动,效果自己试一下就知道了Type=ApplicationCategories=Utility;Application;脚本1.新建文件在新建的文件夹中新建两个文件

pack.shuntitled.sh 该文件的文件名必须与可执行文件的文件名一样2.添加脚本向pack.sh文件里添加以下内容:#!/bin/sh  exe="untitled" #你需要发布的程序名称des="/home/li/Desktop/qttest2" #创建文件夹的位置deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }')  cp $deplist $des然后向untitled.sh文件里添加以下内容(内容不需要更改):#!/bin/sh  appname=`basename $0 | sed s,\.sh$,,`  dirname=`dirname $0`  tmp="${dirname#?}"  if [ "${dirname%$tmp}" != "/" ]; then  dirname=$PWD/$dirname  fi  LD_LIBRARY_PATH=$dirname  export LD_LIBRARY_PATH  $dirname/$appname "$@"3.执行脚本通过终端进入文件夹目录,运行:

sudo ./pack.sh会出现命令未找到的错误信息,可执行以下命令,使用文件为可执行文件

chmod a+x pack.sh然后重新执行sudo ./pack.sh命令即可。

接着可执行文件的依赖的链接库都会拷贝到所在的目录。

最后但是要注意的一点,最好使用非 Linux FHS (文件系统层次结构标准)

就是创建文件夹的时候,结构如下

.├── build├── CI│   ├── build.sh│   ├── exe├── include│   ├── bchartdir.h├── lib│   ├── libchartdir.so│   ├── libchartdir.so.6.0│   └── libchartdir.so.6.0.0├── src│   ├── ubuntuapp.pro│   ├── main.cpp│   ├── mainwindow.cpp│   ├── mainwindow.h└── tool   └── deployqtbuild.sh里的内容如下

# /bin/bashcd /home/wu/workspace/ubuntuapp/CI/execp /home/wu/workspace/ubuntuapp/tool/deployqt ./cd /home/wu/workspace/ubuntuapp/src/home/wu/Qt5.10.1/5.10.1/gcc_64/bin/qmake /home/wu/workspace/ubuntuapp/src/ubuntuapp.pro -o /home/wu/workspace/ubuntuapp/build -spec linux-g++ CONFIG+=debugmake clean -C /home/wu/workspace/ubuntuapp/buildmake -C /home/wu/workspace/ubuntuapp/buildcd /home/wu/workspace/ubuntuapp/CI/execp /home/wu/workspace/ubuntuapp/build/UbuntuApp ././deployqt UbuntuApp -qmake="/home/wu/Qt5.10.1/5.10.1/gcc_64/bin/qmake"rm deployqt写完后,添加权限

sudo chmod 777 build.shubuntuapp.pro里的内容如下

QT += core guiTARGET = UbuntuAppTEMPLATE = appCONFIG += C++11DEFINES += QT_DEPRECATED_WARNINGSSOURCES += main.cpp \   mainwindow.cppHEADERS += mainwindow.hINCLUDEPATH += ../includeLIBS += -L../lib -lchartdirunix:MOC_DIR = ../build/mocunix:OBJECTS_DIR = ../build/obj这样,执行完 build.sh 后,就能在 exe 文件夹里得到 一些文件和文件夹

里面的 AppRun 的超链接可以双击后 打开 UbuntuApp 程序

然后,把 exe 文件夹改个名字,压缩成 zip 格式,就可以拷贝到其他机器上用了

1.关于qt.conf这个文件指定了qt 程序的运行环境,即我们可以使用qt.conf 指定qt程序的运行路径和库路径。内容如下所示:

# Generated by linuxdeployqt# }

Tags: qt下载