I have a trivial "Hello world" C++ program that is compiled to 500kB executable by MinGW g++ compiler under Win XP. Some say that is caused by iostream library and static link of libstdc++.dll.
Using -s linker option helped a bit (reducing 50% size), but I would by satisfied only by <10kB executable. Is there any way how to achieve this using MinGW compiler? Portability is not a big concern for me.
Is it possible to copy libstdc++.dll with the executable using dynamic linking? If so, how to achieve this?
Solved: I was using MinGW 3.4. Now I updated to latest MinGW 4.6 and the size was decreased by 90% to 50kB, with -s option even to 9kB, which is fully sufficient. Anyway - thanks everyone for help. Here you go my results
C++ Hello World program using iostream
MinGW | no options | -s option
------------------------------
3.4 | 500kB | 286 kB
4.6 | 50kB | 9 kB
-shared-libstdc++
to compile and dynamically link against libstdc++.dll, and-Os
to optimize the binary for size. – wklprintf()
. I'm not sure how much of the same dependencies it shares with the iostream library. So it may or may not make it any smaller. – Mysticialg++: error: unrecognized option '-shared-libstdc++'
using MinGW 4.6 – Jan Turoň-static-libgcc
(C) or-static-libstdc++
(C++) options. – Jan Turoň