1. В опциях компилятора
— отключить генерацию отладочной информации (generate debugging information),
— включить strip executable.
2. Использовать C библиотеки вместо C++.
Например, этот код у меня (wxDevCpp / MinGW) компилируется в 5.632 байт:
#include <stdio.h>
int main()
{
printf("Hello World!\n");
getchar();
}
А этот — в 266.240 байт:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, world!\n";
getchar();
}
Если оставаться в рамках C++, то приемлемого решения с GCC / MinGW я не вижу. Только пробовать другой компилятор. Borland C++ 5.5 (BCC32), например, справляется уже заметно лучше. Второй пример превращается в 113.152 байт. Надо еще посмотреть, какие у него там установки по умолчанию, может еще меньше можно сделать.
Можешь еще здесь посмотреть:
Reasons for 'large' objects, libraries and executables
http://mingw.org/MinGWiki/index.php/executables%20large
GNU C vs BCC — huge output file
http://groups.google.com/group/gnu.g++.help/browse_thread/thread/d3c5f95aa54f94ff/b672b9c7a3467bc2
Надеюсь, откликнутся еще более опытные коллеги. У меня самого пока очень поверхностное представление о C++.
Ну и свой код приведи, что ли.