Как уменьшить размер исполняемого файла, создаваемого компилятором MinGW g++?

У меня есть тривиальная программа" Hello world " C++, которая компилируется в исполняемый файл 500kB компилятором MinGW g++ под Win XP. Некоторые говорят, что это вызвано iostream библиотека и статическая ссылка libstdc++.dll файлы.

С помощью - s опция компилятора помогла немного (уменьшив размер 50%), но я бы удовлетворился только исполняемым файлом

можно ли скопировать libstdc++.dll с исполняемым файлом с использованием динамической компоновки? Если да, то как этого добиться?


решила: я использовал MinGW 3.4. Теперь я обновился до последнего MinGW 4.6, и размер был уменьшен на 90% до 50kB, с - s вариант даже к 9кб, которое полно достаточно. В любом случае - спасибо всем за помощь. Вот вам мои результаты

C++ Привет, Мир

4 ответов


флаги:

  • -s Как вы делали, чтобы раздеть символы
  • -lstdc++_s чтобы указать динамически связывание с libstdc++.dll
  • -Os оптимизировать двоичный размер.

по умолчанию статические ссылки mingw на libstdc++.a на Windows.

отметим, что lstdc++_s флаг только в MinGW с GCC > 4.4, я считаю.


дать strip и UPX по попробовать.


использование флага-Os может помочь. Это оптимизирует для размера.


вы должны использовать-O для оптимизации. Добавьте" - O{level} " в ваш компилятор args, и он оптимизируется для скорости или размера. Проверьте документы для компилятора.

вы также можете включить отладочные символы. Раздевание их также сделает его меньше.