QT程序打包成多平台可执行文件
一、简述
QT项目开发完成后,需要打包发布程序,在实际生产中不可能把源码发给别人,所以需要将源码打包正可执行文件或者安装程序。
二、设置应用图标
把 ico 文件放到源代码目录下,在QT项目中的'.pro'文件中添加自己准备好的ico文件(使用QT默认生成的图标时,可以跳过这一步)
RC_ICONS = user.ico // user.ico是自己的图标名称
三、打包windows系统下的可执行文件
- 以 Release 方式编译生成 exe 程序,也就是使用Release模式调试程序。

- 编译完成后会在项目文件下生成一个'build-Qt_hello_word-Desktop_Qt_5_12_9_MinGW_64_bit-Release'文件,在文件release中找.可执行文件

- 现在的可执行文件是不可运行的,会提示找不到.dll文件

- 创建'QT_test'文件,将生成的.exe文件拷到'QT_test'文件中

- 打开MinGW,进入到'QT_test'文件路径下


- 在MinGW中使用
windeployqt命令打包程序
windeployqt Qt_hello_word.exe

7. 执行完成后文件中会生成很多dll文件,这样我们的可执行文件就已经制作完成了,点击.exe文件就可以直接运行


8. 使用Inno Setup软件可以将执行文件打包成安装软件,在这里我就不过多介绍了,需要的小伙伴可以查看这篇博客,这里我就直接引用一下Qt 程序发布以及打包成exe安装包。
Inno Setup软件的下载地址:https://jrsoftware.org/isdl.php。
四、打包linux系统下的可执行文件
linux系统下打包成成可执行文件有两种方式,如果系统中安装有QtCreator软件,直接以Release方式编译运行即可生成可执行文件,这里主要介绍一下qmake的使用。
- 安装qmake软件
在linux系统下打包可执行文件需要使用qmake软件,没有安装的可以安装一下
sudo apt-get install qtchooser
- 将windows系统下的qt项目拷贝到linux系统下,将.pro.user文件删除


- 执行
qmake命令生成Makefile文件

- 使用
make编译生成可执行文件

- 运行程序
./hello_word

五、打包ARM环境下的可执行文件
打包ARM平台下的可执行文件和linux系统下的方式是一样的,同样的有两种方式,只不过ARM的qmake是qt-everywhere-src-5.12.9源码编译生成的软件,编译完成后在路径'arm-qt/bin'路径下会生成qmake软件,不知道怎么编译的小伙伴可以看我之前的QT之ARM平台的移植

- 使用qmake软件的方式编译
生成Makefile文件并编译
/home/linux/arm-qt/bin/qmake
make

2. 以Release方式编译
在linux中装有QtCreator软件的小伙伴可以在软件中添加arm环境下的qmake软件,直接以Release方式编译即可生成执行文件。
打开 Qt Creator 界面,找到 Tools(工具)→Options(选项)。

按下图步骤,找到ARM平台的qmake。

配置C/C++编译器为 arm-linux-gnueabihf-g++

配置Kits

运行程序

编译完成后将会在项目文件夹中生成ARM环境的可执行文件
参考文献
Qt 程序发布以及打包成exe安装包:https://www.cnblogs.com/ybqjymy/p/13540451.html。
QT5程序打包发布,最终生成一个.exe执行程序:http://blog.sina.com.cn/s/blog_96c6e6ef0102zx8y.html。
QT程序打包成多平台可执行文件的更多相关文章
- Qt程序打包成exe可执行文件图文教程(图文并茂,且用到了filepack)
很多Qt爱好者想发布自己的Qt软件,但却发现在其他没有安装Qt SDK的机器上无法运行,这就是本文想要说明的问题.现在网上大部分软件都要发布自己开发的应用程序,都会打包到exe文件中,待安装完exe文 ...
- Qt程序打包成exe可执行文件
很多Qt爱好者想发布自己的Qt软件,但却发现在其他没有安装Qt SDK的机器上无法运行,这就是本文想要说明的问题.现在网上大部分软件都要发布自己开发的应用程序,都会打包到exe文件中,待安装完exe文 ...
- 【win】【qt5打包】【qt程序打包成一个可执行文件(带图标任何win都可以运行哦)】
[前言] 业务需求将qt程序打包成win可执行文件.咱是做linux的,奈何用的麒麟系统,程序运行在win,好嘛,重新在win qtcreator编译后打包呗. [目标] 1.给qt程序添加一个图标. ...
- Java桌面程序打包成exe可执行文件
前言: 我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: ecl ...
- Java程序打包成exe可执行文件
前言: 我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: ecl ...
- Qt 程序打包发布总结
1. 概述 当我们用QT写好了一个软件,要把你的程序分享出去的时候,不可能把编译的目录拷贝给别人去运行.编译好的程序应该是一个主程序,加一些资源文件,再加一些动态链接库,高大上一些的还可以做一个安装 ...
- python + pyinstaller 实现将python程序打包成exe文件直接运行
pyinstaller 我们在平常学习使用python的时候经常会自己编写一些小程序来使用,虽然python是跨平台的语言,但是如果我们想要在一个没有python以及很多库环境的电脑上使用我们的小程序 ...
- 将eclipse的应用程序打包成.exe
转自:http://blog.163.com/loveshijie_1991/blog/static/1760553112012102573437156/ 参考:http://blog.csdn.ne ...
- ubuntu 环境下的QT程序打包
很多的时候 需要将自己写的QT 程序发布一下 所以今天教一下 怎么在ubuntu 环境下将自己的写的Qt 程序打包打包是为了不依赖 开发环境 和开发的库. 1. QtCreate使用Release版 ...
随机推荐
- webRTC的标准与发展
Web实时通信(WebRTC)是标准,协议和JavaScript API的集合,两者的组合可实现浏览器(对等)之间的对等音频,视频和数据共享.WebRTC无需依赖第三方插件或专有软件,而是将实时通信转 ...
- Linux的链接(入门)
Linux的链接分为两种:硬链接和软链接 硬链接:如果B是A的硬链接,那么B和A指向同一个文件,但是删除A并不会影响B->允许一个文件有多个路径 软链接:类似Windows下的快捷方式,删除原文 ...
- 从net到java:java快速入门
学习java那是不可能的,到为什么不学习一下呢.仅为总结.希望自己在不久的将来能书写优美的java程序.加油!奥利给 1.注释 注释的重要性不言而喻,我们不管写什么代码注释必不可少,那么java的注释 ...
- 探索HashMap源码 一行一行解析 jdk1.7版本
今天我们来说一说,HashMap的源码到底是个什么? 面试大厂这方面一定会经常问到,很重要的.以jdk1.7 为标准 先带着大家过一遍 是由数组.链表组成 , 数组的优点是:每个元素有对应下标, ...
- C++ //this 指针的使用 //1 解决名称冲突 //2 返回对象本身 用 *this
1 //this 指针的使用 2 //1 解决名称冲突 3 //2 返回对象本身 用 *this 4 5 #include <iostream> 6 #include <string ...
- 【vulhub】Weblogic CVE-2017-10271漏洞复现&&流量分析
Weblogic CVE-2017-10271 漏洞复现&&流量分析 Weblogic CVE-2017-10271 XMLDecoder反序列化 1.Weblogic-XMLDeco ...
- 一个极其朴素的目录扫描Python脚本
如果目录扫描工具被某些种类的waf拦截了,可以尝试(只是尝试,不是绝对能过)用脚本发出请求,具体功能看需求而定 原理...没啥原理,也没啥技术含量,相信大家都能看得懂的,nobody knows be ...
- Ajax 局部刷新 异步提交
AJAX简介 局部刷新,异步提交. AJAX 不是新的编程语言,而是一种使用现有标准的新方法.它最大的有点就是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容. 浏览器朝后端发送请 ...
- luogu P6239 奇怪的道路
奇怪的道路 我看不出来是状压的状压 好吧,其实看到k的范围应该去往状压方面想的. 然后,题目中说"任何一个城市都与恰好偶数条道路相连(0也被认为是偶数)". 所以,奇偶,两种状态可 ...
- C# prism 框架 MVVM框架 Prism系列之事件聚合器
网址:https://www.cnblogs.com/ryzen/p/12610249.html 本文将介绍如何在.NET Core3环境下使用MVVM框架Prism的使用事件聚合器实现模块间的通信 ...