Question C à deux balles

15 sujets de 1 à 15 (sur un total de 17)

  • 1
  • 2
  • Tom

    • Messages : 1270
    #338

    Juste comme ça en passant :

    Prenons un Hello Word de base :

    /*

    ** Hello World

    ** © 2001 Braindead coders society

    */

    #include

    #include

    int main()

    {

    puts( « Salut les gens. » );

    return RETURN_OK;

    }

    Sous cli j’obtiens :

    – avec vc -o hello hello.c -> 4 Ko

    – avec gcc -o hella hello.c -> 17 Ko

    Comment expliquer la différence de taille ?

    Est-ce l’ascendance unixienne de gcc qui amène le compilo à ajouter des éléments pour rendre le code compatible amiga ?

    J’ai lu quelque part (sur gurumed sûrement) qu’on pouvait utiliser l’option -noixemul à l’occasion.

    Rafo

    • Messages : 792
    #14864

    Plains-toi donc !

    Essaie ça :

    #include

    int main(void)

    {

    cout<<"Hello World" <
    return NULL ;

    }

    sauve en hello.cpp et compile, tu vas halluciner.

    anonyme

    • Messages : 8171
    #14865

    > strip a.out

    ton exécutable devrait dégonflé

    CLS2086

    • Messages : 3290
    #14866

    Et avec printf à la place de cout (vu que tu demandes du C et pas du CPP), ça te donne combien ?

    En plus en C pur, tu n’as pas besoin du return

    henes

    • Messages : 2618
    #14867

    Il faudrait peut-être penser à compiler avec les bonnes options d’optimisation ET à striper l’executable afin de virer le plus de symboles possible.

    Ensuite, les codes de startup des différents compilateurs peuvent TRÈS largement différer et gérer plus ou moins de choses « automagiquement » quitte à gonfler la taille de l’exe au final.

    Bref, à moins de savoir très exactement ce que l’on compare, tout cela n’a strictement aucun intérêt. À mon humble avis. :)

    anonyme

    • Messages : 8171
    #14868

    T’as essayé la même chose avec phxass ? ;)

    @+,

    Léo.

    stan

    • Messages : 508
    #14869

    C’était une question, mon bon henes.

    Quand à dire qu’en « C pur » il n’y a pas besoin de return, c’est une grosse connerie.

    Tom

    • Messages : 1270
    #14870

    err….

    les programmeux sont des gens bizarres tout de même.

    En tout cas merci pour vos non-réponses, elles seront de toute façon plus utiles qu’une réponse directe :)

    Stan : à propos du return, tu dis ça paske ça évite de faire un hit à la fin de la fonction (dans le cas du hello word) ?

    stan

    • Messages : 508
    #14871

    La réponse c’est que gcc met 13 ko de données de plus dans l’exe que VBCC :-).

    Des trucs qui servent à rien (sauf débuggage, peut-être) et peuvent gicler en faisant un strip.

    Enfin, c’est tout ce que je sais.

    Il faut un return car main() retourne un int.

    Yomgui

    • Messages : 1589
    #14872

    c’est vraiment à deux balle cette question… :-P

    réponse à 1 balle (comme ça je récupe 1 balle pour le café):

    Elimine les commentaires au début, ça va carrément réduire ton code…. source! :-D :-D :-D :-D

    plus sérieusement, fait ceci:

    gcc -noixemul -O -o hello hello.c

    strip hello

    (et encore on peut virer une section inutile avec strip, mais j’ai plus le truc en tête)

    Tom

    • Messages : 1270
    #14874

    Boarf, grosso modo tout le monde m’a expliqué COMMENT réagir au problème, mais jusqu’au réçent post de Stan y avait pas réellement d’explication au phénomène.

    Mais je disais pas ça pour froisser les gens hein :)

    sinon j’ai essayé gcc -noixemul -O -o hello hello.c

    et l’exécutable est encore plus gros (il est passé de 17Ko à 21 Ko)!

    Et en faisant « strip hello » j’obtiens le message suivant :


    Warning: Output file cannot represent architecture m68k:68000


    Et j’ai rien modifié à l’install par défaut qui est, je pense, orientée 68K.

    Etrange…

    /me a l’impression de revivre ses premiers cours de Turbo Pascal 5 au lyçée…

    stan

    • Messages : 508
    #14875

    Ouais mais d’après Fab j’ai tout faux :)

    Tant pis, hein.

    De toute façon, mes exes à moi ils font 1Mo (ou 700ko en version ppc), donc 13ko de plus ou de moins…

    Tom

    • Messages : 1270
    #14876

    mes exes à moi ils font 1Mo (ou 700ko en version ppc)

    Tiens, je croyais justement que les exe ppc était plus gros que les 68k, à fonctionnalités égales.

    stan

    • Messages : 508
    #14877

    Ouais… j’imagine qu’il y a plus d’infos de debug dans la version 68k.

    Yomgui

    • Messages : 1589
    #14878

    ashitaka le 28/5/2004 14:14:36:

    Et en faisant « strip hello » j’obtiens le message suivant :


    Warning: Output file cannot represent architecture m68k:68000


    Et j’ai rien modifié à l’install par défaut qui est, je pense, orientée 68K.

    Etrange…

    Je ne vois qu’un pb d’install où un vieux gcc vient te perturber.

    Pour être sur utilise les commandes:

    ppc-morphos-xxx

    où xxx correspond aux commandes usuelles: gcc, as, ar, nm, strip, …

15 sujets de 1 à 15 (sur un total de 17)

  • 1
  • 2
  • Vous devez être connecté pour répondre à ce sujet.

Forums AmigaOS, MorphOS et AROS Développement Question C à deux balles

Amiga Impact