Ajouter un commentaire

Go : les binaires Go incluent tout

Par:
francoistonic

mar, 05/05/2026 - 09:55

C'est un débat qui existe depuis les premiers langages : que doit contenir un binaire exécutable ? Nous avons lu un résumé sur Linkedin sur les binaires Go de Thierry F. Il précise en introduction qu'un simple code C (hello world) pèse 8 Ko contre 1,2 Mo pour Go. 

Quand on regarde la structure d'un binaire Go, on comprend immédiatement pourquoi il pèse plus lourd. Un binaire exécutable contient TOUS les composants nécessaires pour s'exécuter sur l'OS hôte. Cela signifie qu'il agit comme toute application stand alone. Le binaire Go intègre l'ensemble du runtime incluant le garbade collector, le scheduler des goroutines, la partie de la lib standard utilisée ainsi que le code compilé et les dépendances. 

Cela signifie que nous n'avons besoin que du binaire pour exécuter son application Go sur Linux, macOS, Windows et l'ensemble des architectures matérielles supportées. 

Avantage :

- aucune installation préalable d'un framework, d'une lib ou d'un runtime

- binaire tout-en-un

Inconvénient :

- le poids du binaire qui grossit avec le projet à compiler

Si vous êtes sur un langage interprété, vous devez installer le runtime requis pour exécuter le code. 

Cela signifie que la taille du binaire ne peut pas être réduit à l'infini à cause de sa structure. Vous pouvez jouer sur le code mort, les dépendances inutiles, optimiser les éléments media, etc. La commande nm aide à comprendre ce que contient le binaire et le poids des éléments. Il liste les symbols présents : Text, données en lecture seule, les segments de données, etc. Lors du build, vous pouvez voir le contenu du binaire. 

Quelques astuces pour optimiser le poids des binaires Go : https://oneuptime.com/blog/post/2026-01-07-go-reduce-binary-size/view

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 L      QQQ    ZZZZZ  DDD   FFFF 
L Q Q Z D D F
L Q Q Z D D FFF
L Q QQ Z D D F
LLLL QQQQ ZZZZZ DDD F
Q