最近,我跟着它是否合法或不建商業/專有應用了Qt4-interest郵件列表上的討論和靜態鏈接的Qt4進去。雖然有一些未經證實的方式(通過向客戶提供目標文件和Makefile等),但這聽起來不像是一個好主意。大廈優化的Qt4 - 「的./configure」標誌及其含義
我的一個項目使用LGPL許可的Qt4庫和我船它們作爲單獨的DLL/Dylibs /這樣對我的客戶,使用所有平臺上的一個簡單的安裝。雖然這個作品不錯,到目前爲止,我想通過只包括我需要什麼,二)增加我的應用程序的啓動/加載減速Qt庫的大小,以優化)的安裝程序的大小。
我熟悉編譯Qt的自己,但Qt的有很多標誌和開關。
現在我用下面的標誌建築:
./configure \
-fast \
-opensource \
-qt-sql-sqlite \
-nomake demos examples \
-silent \
-no-qt3support \
-no-gif \
-plugin-sql-mysql \
-release \
-no-xmlpatterns \
-no-multimedia
我不能完全肯定其效果/影響下面的標誌有:
-no-stl
-no-javascript-jit
-no-nis
-separate-debug-info
-no-openvg
-no-mitshm
還有什麼我能做的,例如,通過提供優化開關編譯器,或「剝離」未使用的功能進行內置Qt庫,使之更小(這對靜態構建來說很容易)。我沒有太多的經驗。
哦,只是作爲一個側面說明,我的編譯的應用程序大小約爲600 KB(未剝離的)對Qt的動態鏈接時。我對它進行了實驗,發現靜態鏈接時其大小約爲4 MB;但這樣我就不必再包含40 MB的Qt庫了。
所以,把一切都入一個問題/請求:
如果你比我更先進的關於這個主題,你怎麼優化/部署自己的應用程序,並確保他們啓動速度快,只包含需要什麼?
感謝您的答覆! 其實,我只是運送需要的東西,包括QtCore,QtGui,QtWebKit,QtXml,QtSql和QtNetwork。 我使用'-no-stl'時有什麼問題?我會盡力瞭解更多關於鏈接時間代碼生成的內容,因爲這似乎很有趣。另外排除一些樣式是一個非常好的主意,因爲我只是在OS X/Windows上使用本機樣式。 – BastiBen 2009-11-27 08:58:51
您將失去QString和basic_string之間以及QTL容器和STL容器之間的轉換函數。 – rpg 2009-11-27 12:51:05
感謝您解決這個問題。我不記得在任何地方使用過STL類/類型。通常Qt的東西對我來說工作得很好。 :) – BastiBen 2009-11-28 11:43:53