Historiquement les compilateurs fonctionnaient toujours par morceau pour gérer la pénurie de mémoire des ordinateur (d'où les .o du C).
Probablement parce qu'il fallait pas mal de mémoire pour compiler, et aussi, et surtout, pour avoir des fichiers objet intermédiaires très granulaires, au niveau de la fonction.
Pour enlever les fonctions inutiles, il faut être capable de détecter toutes les appels de fonction en scannant le code entier.
Et c'est le travail de l'éditeur de liens : il scanne les .o et construit un arbre de dépendance pour n'inclure dans les exécutables que le code effectivement appelé. C'est pour ça que (avec certains linkers anciens), il fallait spécifier deux fois des .a (ou .lib) en cas de dépendances tordues...
[^] # Re: langue
Posté par Tonton Th (site web personnel, Mastodon) . En réponse à la dépêche Des alternatives à grep, ls et find. Évalué à 3.
Probablement parce qu'il fallait pas mal de mémoire pour compiler, et aussi, et surtout, pour avoir des fichiers objet intermédiaires très granulaires, au niveau de la fonction.
Et c'est le travail de l'éditeur de liens : il scanne les
.oet construit un arbre de dépendance pour n'inclure dans les exécutables que le code effectivement appelé. C'est pour ça que (avec certains linkers anciens), il fallait spécifier deux fois des.a(ou.lib) en cas de dépendances tordues...