Почему «.exe» намного больше, чем «.out», если они скомпилированы из одного и того же исходного кода c / c ++? - PullRequest
3 голосов
/ 21 сентября 2019

Рассмотрим следующий код c / c ++:

int main () {
    int a = 1;
    int b = 2;
    int c = a + b;
}

Когда я компилирую это с помощью g ++ (проект MinGW-W64) в Windows, файл .exe заканчивается как 53KB

Но когда я компилирую его с помощью g ++ в Ubuntu, файл .out заканчивается только как 8KB

Почему разница в размере между этими двумявыходные файлы такие большие?

1 Ответ

3 голосов
/ 21 сентября 2019

Исполняемый файл содержит не только скомпилированный код, но и дополнительную информацию, информация о которой будет варьироваться в зависимости от различных исполняемых форматов.

При оптимизации показанный вами код будет полностью оптимизирован, и даже безоптимизации, данный код будет приводить только к нескольким байтам машинного кода.Поэтому для вашей программы размер метаинформации исполняемого файла составляет ~ 53 КБ и ~ 8 КБ.

...