Я уточню свой комментарий в качестве ответа:
<iostream>
имеет много внутренних зависимостей, даже для использования простого вызова cout. Он вводит много других кодов / заголовков, необходимых для работы (включая код шаблона и тому подобное). Скажем прямо, размер ввода <iostream>
, вероятно, не очень важен в нетривиальном приложении.
Вы можете доверять компилятору / компоновщику, чтобы знать, что они делают, но если вы хотите уменьшить двоичный размер, попробуйте использовать параметры, такие как gcc -s
, который убирает символы, или флаги, такие как -Os
, который пытается оптимизировать двоичный файл для размера.
Я подозреваю, что многие ваши проблемы с размером двоичного кода на самом деле происходят из-за чего-то другого: статически связанных libstdc++
.
Если вы используете MinGW в Windows, учтите, что до недавнего времени в их реализации инструментария GCC не было динамически связанной libstdc++
; вместо этого все сборки C ++ статически связаны в libstdc++
, что значительно увеличит размер ваших двоичных файлов.
Вот сравнение, размер двоичного файла, создаваемого g++
для вашего кода в Linux, с использованием GCC 4.6.1. На этих сборках не выполнялась оптимизация или удаление символов.
λ > ls -lh a.out
-rwxr-xr-x 1 billylee billylee 6.1K Dec 24 10:37 a.out
А вот один, произведенный GCC
λ > ls -lh trial
-rwxr-xr-x 1 billylee billylee 4.9K Dec 24 10:41 trial
Версия g ++ немного больше, чем версия gcc, но не в 100 раз больше.
edit: Если вы используете MinGW - здесь есть недавняя тема: Как уменьшить размер исполняемого файла, создаваемого компилятором MinGW g ++?
MinGW gcc 4.5.0+ должен использовать динамическое связывание по умолчанию, проверьте свою версию, если вы используете MinGW.