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