QT5生成可执行文件总结
轉載自:https://blog.csdn.net/helaisun/article/details/51810082
環境:win7 32位 運行Qt5.6?
所需外部軟件:upx391w,Enigma virtual Box
以樣例的形式說明如下:
1.利用QtCreator打開項目release生成項目可執行文件,注意這時生成的 *.exe文件是不能執行的,需要很多外部.dll文件,debug方式生成的文件有1.8M大。
2.提取ButtonTest5.exe運行所需要的dll文件。
如在F盤新建一個button文件夾,將ButtonTest5.exe復制到button文件夾中,啟用Qt自帶的windeployqt,將ButtonTest5.exe運行需要關聯的dll文件拷貝到F 盤的button文件夾中,方法如下(參考:http://blog.csdn.net/syrchina/article/details/50663337):
在開始菜單找到Qt 5.6 for Desktop (MinGW 4.9.2 32 bit),運行打開Qt命令行,如下圖。
針對F盤下的button文件夾,輸入命令行: cd /d F:\button,切換到button文件夾目錄下,
然后使用windeployqt工具,?再次輸入命令行;windeployqt ?ButtonTest5.exe,就可以執行拷貝ButtonTest.exe文件關聯的dll文件到button目錄下面了,再看看F盤下的button文件夾,所需要的dll文件都已經拷貝進去了,如下圖。
可以打開button文件夾,里面的ButtonTest5.exe可以運行了,此時button文件夾的總大小約39.7M,
3.使用Enigma virtual Box將ButtonTest5.exe文件及需要關聯的dll文件生成單個可執行文件
運行提前安裝好的Enigma virtual Box,"Input File Name"項選擇可執行文件ButtonTest5.exe,“Enter Output File Name”選擇待生成的單個可執行文件存放位置。點擊“Add...”選擇“Add Folder Recursive”添加dll文件所在的文件夾,選擇F盤下的button文件夾。
點擊"File Options"按鈕,設置文件選項如上圖,點擊“OK”,最后一步是點擊"Process",即可自動生成所需的單個可執行文件。生成的單個可執行文件有15.6M大小,如下圖。
如果對生成的exe大小比較滿意,到此就可以結束了。
如果是不想制作成單個可執行文件,而只是想以一個文件夾的方式(即:dll文件+ButtonTest.exe),顯然,39M的大小是不能令人滿意的,我們需要upx391w對dll文件進行無損壓縮。
4.使用upx391w對dll文件進行壓縮
upx391w(下載地址:http://upx.sourceforge.net/),在使用upx壓縮前我們復制一份button文件夾,取名為button_1,方便對比。
下載upx391w,并將其解壓到C盤下面(注:不知道為什么我放到F盤下沒法正常使用,可能是系統命令行的原因吧!)
運行電腦的命令行,輸入 cd C:\upx391w ?
再次輸入命令行: upx.exe ? F:\button_1\*dll
這樣就能將button_1下的所有dll文件進行壓縮了,下圖可以看出壓縮后的文件比壓縮前的文件小一倍,
當然你也可以如法炮制對iconengines等文件夾下的dll文件進行壓縮,當所有dll文件都壓縮完后,整個button_1文件夾的大小變為15.2M了,和上一步驟生成的單個可執行文件大小差不多了,比原來的39M小了一倍多。
但是,會發現不能對platforms文件夾中的dll文件進行壓縮,否則button_1文件夾下的ButtonTest5.exe不能正常運行了,出現如下圖示錯誤。所以在壓縮dll文件時不要對platforms文件夾內的dll文件進行壓縮,將platforms文件夾內的dll文件換回來就可以正常運行了。
這時你還可以仿照步驟3,用Enigma virtual Box將button_1文件夾內的ButtonTest5.exe進行制作成單個可執行文件。將生成的單個可執行文件命名為ButtonTest5_boxed11.exe,發現制作后的可執行文件大小為14.1M,相比較未壓縮dll文件制作的單個可執行文件15.6M小了一些。
另外,網上也有不少文章(如:http://blog.csdn.net/gzshun/article/details/7495488)介紹hap-depends + ASpack + filepack方法生成可執行文件的,自己嘗試用ASpack對button文件內的dll文件進行壓縮,結果生成的.bak文件反而更大,如下圖示,不知道是使用方法不對還是下載的軟件有問題。嘗試filepack封包結果也是不行,當然,很可能是自己使用不當的原因。
最后仍有很多不懂的東西,比如生成的單個可執行文件BottonTest5_boxed11.exe運行起來,通過Process Explorer軟件查看內存占用比程序本身還大,可能是Qt本身的原因吧!
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的QT5生成可执行文件总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: stm32命名规则,型号说明
- 下一篇: 双向链表及其用法