簡體   English   中英

如何減小MinGW g ++編譯器生成的可執行文件的大小?

[英]How to reduce the size of executable produced by MinGW g++ compiler?

我有一個簡單的“Hello world”C ++程序,在Win XP下由MinGW g ++編譯器編譯為500kB可執行文件。 有人說這是由libstdc ++。dlliostream庫和靜態鏈接引起的。

使用-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,我相信。

stripUPX一試。

使用-Os標志可能會有所幫助。 這樣可以優化尺寸。

您應該使用-O進行優化。 將“-O {level}”添加到編譯器args中,它將針對速度或大小進行優化。 檢查編譯器的文檔。

您也可以啟用調試符號。 剝離它們也會使它變小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM