Сборка Exe с помощью блоков кода почти в 57 раз больше, чем та же сборка кода Visual Studio - PullRequest
3 голосов
/ 15 февраля 2011

Этот код:

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello world!\n";
    return 0;
}

при компиляции дает размер 457 КБ в Code :: Blocks с GCC 4.4.1 и только 8 КБ (восемь) в VS2010. Оба компилятора оптимизированы по размеру.

Кто-нибудь знает, почему такая разница?

Ответы [ 2 ]

6 голосов
/ 15 февраля 2011

Это связано со статической связью стандартной библиотеки c ++ с помощью g ++, тогда как VS будет связывать ее динамически. Быстрая проверка с использованием gcc под cygwin дает мне примерно одинаковые размеры, и полученный exe-файл импортирует только некоторые функции языка Си.

#include <stdio.h>
int main() {
  printf("Hello world\n");
  return 0
}

С другой стороны, это приложение скомпилировано в тот же минимальный EXE-файл под gcc, поскольку не требует никакой функциональности c ++.

1 голос
/ 15 февраля 2011

Вы правы, исполняемый gcc явно больше, в вашем случае в 57 раз больше, чем встроенный vc ++.

Основная причина в том, что для работы с GCC не потребуетсяДля запуска внешних зависимостей, в то время как для системы, созданной с VS2010, в системе должны быть как минимум файлы времени выполнения.

Например, скажем, вы попробовали это на компьютере какого-то друга без установленного vs2010, скореепопробуйте более раннюю ОС, такую ​​как XP, без шансов даже на время выполнения VS2010.

У системы, созданной с помощью GCC, проблем не будет, а у системы, созданной с VS2010, возникнет ошибка отсутствия файла времени выполнения (зависимость).

Надеюсь, это помогло, если это не помогло или у вас возникли другие вопросы, не стесняйтесь спрашивать, и я буду рад помочь:)

...