我正在使用Qt 4.8.5在Fedora上創建一個程序(我們稱之爲ProgramWP),並基於帶有QWizardPages的QWizard結構。該計劃有50多個班級,其中30個是QWizardPages。Qt:我怎樣才能讓我的exe的重量減少
的事情是,可執行程序「權重」(不知道英文單詞/表達式)爲8MB(發行版),我想知道:
- 爲什麼它體重這麼多?原因是什麼?
- 我該如何減少它?
我需要減少它,因爲在企業的產品中,有一些應用程序運行,其中一些是我的。用晚餐了exe文件的:
- ProgramMAIN(1.5MiB):企業的主程序。
- ProgramMAIN2(600KiB):企業的另一個重要方案。
- ProgramWP(8MiB):我的主程序(用Qt製作)。
- ProgramMINI(2.5Mib):我的主程序(使用Qt製作)的迷你版本。
- 節目3(1.3MiB):我的其他程序使用Qt
做正如你可以看到我的主程序的權重那麼那麼那麼多比主之一,而最主要的是SOOOO更大(ProgramWP是隻是一個小程序來配置一些簡單的事情)。
我在ProgramWP和ProgramMINI中靜態鏈接了一些庫,但programMAIn和ProgramMAIN2也是如此...因此,知道ProgramMain2與鏈接庫是600Kibs,我的ProgramWP應該不會超過這個重量。
這是我做的.pro文件鏈接:
unix:!macx: LIBS += -L$PWD/../../ConfigLib/Release/ -lLib1
INCLUDEPATH += $PWD/../../Lib1
DEPENDPATH += $PWD/../../Libs/Release
unix:!macx: PRE_TARGETDEPS += $PWD/../../Libs/Release/Lib1.a
我已經搜查和詢問,發現我可以在QMAKE_CXX_FLAGS+= -s
行添加到.pro文件刪除unnecesary,代號後這樣做,並運行qmake,它仍然是重量相同(這就像是如果它被忽略)。我已經看到,如果GCC使用-s PARAM和重建,我得到:
g++ -c -pipe -std=c++11 -s -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_SCRIPT_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/lib/qt4/mkspecs/linux-g++ -I../MyProject-I/usr/include/QtCore -I/usr/include/QtNetwork -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include/QtScript -I/usr/include -I../../Utils -I../../Lib1-I../../Lib2-I../../Lib3-I../../Lib4-I. -I. -I../MyProject-I. -o wp2.o ../MyProject/wpmine.cpp
所以你可以看到,似乎是GCC使用的是PARAM所以......爲什麼會這樣重,哪有什麼想法我修復它?
非常感謝。
注意:他們的程序基本上是用eclipse和C++編寫的,而我的是用Qt編寫的。爲了運行它,他們已經在企業產品中安裝了一些Qt庫,所以另一個問題是......他們能否在沒有安裝該庫的情況下運行我的程序?只是放在那裏的exe和調用它?
可執行文件的大小與Qt一樣大,因爲Qt是庫中的一塊臃腫塊。想讓它變小嗎?保持Qt清除。 – IInspectable
哈哈哈很好:)但是我的老闆想要Qt製作的程序,現在他們希望它的重量低於他們的程序......我會在主帖中添加一條關於它的註釋,因爲他們的程序是在eclipse中製作的, C++ – Megasa3
EXE的大小是非常不相關的。如果你想部署一個Qt應用程序,你必須在應用程序旁邊發佈支持庫(Windows上的DLL)。對於什麼都不做的標準應用程序,它們的重量大約爲30MiB。 – IInspectable