Você pode usar o sinalizador -os se estiver usando o GCC para compilar. Você pode encontrá-lo aqui na página de sinalizadores do GCC -
-Os
Optimize for size. -Os enables all -O2 optimizations that do not typically increase code size. It also performs further optimizations designed to reduce code size.
-Os disables the following optimization flags:
-falign-functions -falign-jumps -falign-loops
-falign-labels -freorder-blocks -freorder-blocks-and-partition
-fprefetch-loop-arrays
Se você por algum motivo precisar ter esses sinalizadores, bem, isso não é para você. Além disso, você está comprometendo o desempenho para o tamanho
Você também pode usar vários métodos de compactação executável como upx , publique a compilação para tornar o tamanho do seu executável menor. Essa também é uma compensação de desempenho / tamanho (embora bastante mínima), mas pode ser usada além da otimização que você escolher usar. A redução de tamanho aqui pode ser bastante dramática.