• # Inutile

    Posté par . En réponse au journal Fonctionnement du linker dynamic sous linux. Évalué à 9.

    > Question 1 : je vois en gros l'interet du link dynamique (vraiment, de loin et en gros), mais les defauts me semble tellement nombreux qu'en fait, non, je vois pas.

    On va faire un petit test:

    $ cd /usr/bin
    $ objdump -T * 2> /dev/null | grep " printf" | wc

    donc avec ce simple test nous voyons que nous avons 930 binaires qui utilisent printf. Maintenant si tu n'as pas de lib dynamique ca veut dire 930 fois le code de printf !

    Prend un autre exemple une machine d'université. Chaque étudiant à 20 binaires utilisant printf il y a 500 comptes.... 10 000 copies du même code.

    Le gain de place est monstrueux. Un hello world compilé en -static fait 377Ko contre 3Ko pour celui utilisant une bibliothèque partagée. Sur une distrib classique il y a dans les 3000 binaires installés : 1Go rien que pour la libc.

    La maintenance est aussi très facile. Si jamais tu as un bug dans la lib png. Tu mets à jour la libpng. Maintenant si tu as pas de lib dynamique

    $ ldd * 2> /dev/null | grep png | wc
    60 225 3031

    Un peu plus lourd non ? À chaque modification de la libpng il faut recompiler et redeployer 60 logiciels.

    Et pour finir ca permet de faire des trucs magnifiques. Par exemple je bosse actuellement sur un projet qui à besoin de surcharger quelques fonctions de la libc. Là où ca pourrait être la folie pour que tout le système utilise ma version des fonctions. La bibliothèques dynamiques rendent ca très facile. Suffit de créer un /etc/ld.so.preload et de mettre ta lib dedans et hop tu prends la main sur la libc et voila tout ton système vient de migrer d'un coup. Rien à recompiler....

    Tu vois toujours pas d'avantages ? :-)