[英]How to reduce the size of executable produced by MinGW g++ compiler?
我有一個簡單的“Hello world”C ++程序,在Win XP下由MinGW g ++編譯器編譯為500kB可執行文件。 有人說這是由libstdc ++。dll的iostream庫和靜態鏈接引起的。
使用-s鏈接器選項有點幫助(減小50%的大小),但我只滿足於<10kB可執行文件。 有沒有辦法如何使用MinGW編譯器實現這一目標? 便攜性對我來說不是一個大問題。
是否可以使用動態鏈接將libstdc ++。dll與可執行文件一起復制? 如果是這樣,如何實現這一目標?
解決了:我使用的是MinGW 3.4。 現在我更新到最新的MinGW 4.6,尺寸減少了90%到50kB, -s選項甚至減少到9kB,這已經足夠了。 無論如何 - 感謝大家的幫助。 在這里你得到我的結果
使用iostream的C ++ Hello World程序
MinGW | no options | -s option
------------------------------
3.4 | 500kB | 286 kB
4.6 | 50kB | 9 kB
要使用的標志:
-s
像你一直在做剝離符號 -lstdc++_s
指定與libstdc++.dll
動態鏈接 -Os
優化二進制大小。 默認情況下,在Windows上使用靜態鏈接到libstdc++.a
。
請注意, lstdc++_s
標志僅在MinGW中,GCC> 4.4,我相信。
使用-Os標志可能會有所幫助。 這樣可以優化尺寸。
您應該使用-O進行優化。 將“-O {level}”添加到編譯器args中,它將針對速度或大小進行優化。 檢查編譯器的文檔。
您也可以啟用調試符號。 剝離它們也會使它變小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.