我是qt.I的新手,我做了一個非常簡單的qt程序,因爲我沒有商業許可證我使用了依賴walker並將所有.dll從我的qtsdk文件夾添加到我的釋放文件夾。它工作得很好。但是當我檢查它的大小時,它是非常大的。我的問題是如何使它變小。還解釋了靜態和動態庫之間的區別以及它如何影響應用程序的大小。有多種方式有沒有購買商業許可證使qt應用程序更小。任何幫助表示讚賞。我該如何讓Qt應用程序變得更小
2
A
回答
8
一般來說,沒有什麼可以做到顯着減少應用程序及其依賴的大小。有幾件事我不認爲你已經考慮過了,或者如果有必要的話可以這樣做:
你不需要所有的Qt DLLs。取決於你使用的Qt的哪些部分,你可以忽略像QtWebKit和其他的東西。這可能會將您的應用程序重新分配大小減半。
如果它是您的可執行文件很大,請嘗試使用選項進行編譯以優化大小而不是速度。根據您的應用,最終的性能應該接近或甚至可能比通常的優化所做的要好。這對於GCC是
-Os
,對於MSVC是/Os
。剝離調試符號的DLL和可執行文件。發佈版本應該已經自動完成。我希望你不會抱怨調試二進制文件的大小...
緊湊的二進制文件,像UPX。這只是表面上的,而且還附帶some subtle drawbacks。
用上述選項重新編譯Qt,這可能會削減總Qt DLL大小的5-10%。您還可以禁用不需要的功能(如未使用的Qt樣式),從而進一步縮小DLL的大小。但是這很乏味,可能不值得,因爲無論何時更新到最新版本,都需要重新編譯Qt。
話雖這麼說,如果你的代碼是GPL許可,沒有什麼從靜態鏈接的Qt阻止你。您將需要自己編譯靜態Qt庫,或者在某處找到它們。通常,靜態鏈接將增加可執行文件的大小,但可能允許編譯器忽略圖像中通常仍會出現在DLL版本中的未使用的代碼。所以是的,靜態鏈接可能會使你的應用程序的總大小變小。
相關問題
- 1. Android,我該如何讓AVD變小?
- 2. 更改顯示的DPI縮放大小使得Qt應用程序的字體大小變得更大
- 3. 我該如何讓這個python代碼變得更難看
- 4. 我該如何讓ggplot2 X11輸出變得更加難看?
- 5. 我應該如何讓Backbone應用程序中的視圖相互更改?
- 6. 這個小小的改變如何讓我的程序崩潰?
- 7. 我該如何讓android應用程序圖標完全一樣?
- 8. 我該如何讓android應用程序按時間做東西?
- 9. 我該如何讓android應用程序無法移除?
- 10. 我應該如何讓我的PHP API適用於iPhone應用程序
- 11. 我該如何讓這個類是一個小程序
- 12. 我該如何讓一個程序在循環中獲得一個變量? (java)
- 13. 有什麼辦法讓我的android應用程序更小?
- 14. 如何讓我的應用程序ID
- 15. 我應該如何創建可更新的應用程序?
- 16. 如何讓我的應用程序單例應用程序?
- 17. Facebook應用程序 - 如何讓我的應用程序生活?
- 18. 我該如何殺死應用程序?
- 19. 使用qt最小化應用程序
- 20. 我該如何讓我的動畫變得不那麼生澀?
- 21. 如何讓AR程序變得更加複雜
- 22. Android Studio - 我們應該如何讓應用更快地編譯?
- 23. 我該如何讓這個程序更高效
- 24. 最小的Java程序應該如何?
- 25. 我應該讓我的MutexLock變得不穩定嗎?
- 26. QT讓應用程序檢查sourceforge.net上是否有更新
- 27. 如何讓QT應用程序編寫崩潰日誌
- 28. 如何讓我的Android應用程序聽到更新?
- 29. 如何讓mod_perl識別對我的應用程序的更改?
- 30. Qt Android 5.3應用程序大小
碰巧,我在一週前回答了關於靜態和動態庫的問題,請參閱http://stackoverflow.com/a/21651275/1741542 –
您不需要商業許可證就可以減小二進制文件的大小。 –
你必須使用QT靜態鏈接。 –