• [^] # Re: Readelf, objdump

    Posté par (site web personnel) . En réponse au message GCC et taille des exécutables. Évalué à 6.

    GCC devrait utiliser la méthode la plus efficace en temps et en taille, non?


    Tu peux commencer par regarder du coté de l'option -nostdlib
    À toi alors d'ajuster ton code C comme il faut pour que ça fonctionne toujours. Le fonctionnement standard du C, c'est que la libc est disponible.

    strip permet la suppression de code mort


    Non, ce n'est pas du "code mort". À moins que tu n'appelles "code" la section .comments ?

    Le reste, ce sont des informations, parfois nécessaire à l'OS :
    - Quel est l'interpréteur ? (/lib/ld-linux.so.2 ou /lib64/ld-linux-x86-64.so.2)
    - Quelles sont les bibliothèques nécessaires pour faire tourner le programme ? (la libc)
    - Quelles versions nécessaires desdites bibliothèques ? (parfois, il y a un changement d'ABI entre les versions)
    - Quels sont les symboles qui sont visibles de l'extérieur ? (le main, pour qu'il puisse être appelé)
    - Quels sont les symboles externes qui sont visibles dans le programme ? (stdin, stdout, optarg, ... par défaut, libc oblige)
    - Comment doit être configurée la pile ? (non-exécutable)

    un facteur 10

    Dans ce cas extrême où le programme ne fait rien. Je passe, la comparaison est spécieuse.

    ... [DSP Motorola] ... [6ko pour un programme en C qui ne fait rien] ...

    Ton programme C fait en réalité beaucoup de choses pour que l'OS puisse l'utiliser de manière optimale (ou même parfois l'utiliser tout court). Le programme du DSP a beaucoup moins de contraintes à ce niveau.