Question C à deux balles

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

  • 1
  • 2
  • Tom

      #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

        #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

          #14865

          > strip a.out

          ton exécutable devrait dégonflé

          CLS2086

            #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

              #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

                #14868

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

                @+,

                Léo.

                stan

                  #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

                    #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

                      #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

                        #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

                          #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

                            #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

                              #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

                                #14877

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

                                Yomgui

                                  #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