Cauchemars de liaison statique : les lamentations d’un fournisseur de SDK
En tant que fournisseur de SDK, nous devons proposer des options de liaison dynamique et statique. Les archives statiques (.a) semblent simples, mais elles sont pleines de dangers. Le comportement par défaut du lieur atomise l’archive, en choisissant les fichiers objets, ce qui peut entraîner des binaires gonflés et des plantages au moment de l’exécution en raison de problèmes d’ordre des constructeurs/destructeurs. Bien que l’option -Wl,--whole-archive soit utile, elle force l’inclusion de tous les fichiers de bibliothèque, indépendamment des besoins. Les conflits de noms dans les archives statiques posent également des problèmes importants. Pour surmonter ces difficultés, l’auteur propose un nouveau format de fichier « Static Bundle Object » (.sbo). Cela offrirait les garanties de visibilité des symboles d’un objet partagé, évitant de nombreux problèmes de liaison, même si cela signifie sacrifier une optimisation potentielle de la taille du binaire. L’auteur soutient qu’un écosystème de liaison stable en vaut la peine.