I know that there is an option \"-Os\" to \"Optimize for size\", but it has little affect, or even increase the size on some occasion :(
strip (or \"-s\" option) remov
It also depends on the architecture you are using.
On arm, you have the Thumb instruction set that is here to reduce the generated code size.
You can also avoid dynamic linking and prefer static linking for libs only used by your program or very few programs on your system. This will not decrease the size of your generated binary per se, but overall, you will use less space on your system for this program.