Visual Studio – Compilation C, dépendances et taille d’exécutable

Quelques données brutes post-compilation d’un code source simple :

#include <stdio.h>

int main(int argc, char **argv)
{
	printf("Hello Kiwi\n");
	return 0;
}

Rien de particulier, ce code devrait juste donner un exécutable des plus léger.

Compilation dynamique

Plateforme Taille Dépendances
VC9 (Visual Studio 2008) 7 168 msvcr90.dll
kernel32.dll
VC10 – (Visual Studio 2010) 6 144 msvcr100.dll
kernel32.dll
VC11 – (Visual Studio 2012) 7 168 msvcr110.dll
kernel32.dll
  • Avantage : code très léger
  • Inconvénient : nécessite la présence de runtimes spécifiques sur les environnements ciblés

Compilation statique

Plateforme Taille Dépendances
VC9 – (Visual Studio 2008) 53 248 kernel32.dll
VC10 – (Visual Studio 2010) 46 080 kernel32.dll
VC11 – (Visual Studio 2012) 62 976 kernel32.dll
  • Avantage : plus de dépendances aux runtimes !
  • Inconvénient : taille conséquente ! le contenu des librairies est incorporé au binaire

Compromis

Plateforme Taille Dépendances
WDK 7600.16385.1 6 144 msvcrt.dll
kernel32.dll
  • Avantage : code très léger ! (utilise les runtimes du système, plus de dépendances externes)
  • Inconvénient : certaines fonctionnalités récentes ne sont pas disponibles dans ce runtime