Вы можете использовать флаг -os, если вы используете GCC для компиляции. Вы можете найти его здесь на странице флагов 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
Если вы по каким-то причинам должны иметь эти флаги, ну, это не для вас. Кроме того, вы ставите под угрозу производительность для размера
Вы также можете использовать различные методы сжатия исполняемых файлов, такие как upx, post- compile, чтобы уменьшить размер исполняемого файла. Это также компромисс между производительностью и размером (хотя и довольно минимальный), но его можно использовать поверх любой оптимизации, которую вы выберете. Уменьшение размера здесь может быть довольно существенным.