Forum Linux.redhat installation version récente de gcc

Posté par  .
Étiquettes : aucune
0
2
juin
2005
bonjour,
sur ma FC2, j'ai gcc 3.3.3 en natif.
comment installer une version plus récente de gcc ?
dans le paquetage, installe-t-il le nécessaire pour g++ ?
je pense aux librairies surtout (libg++ et libstdc++).
J'ai chargé :
gcc.3.4.4.tar.bz2
et
gcc-g++-.3.4.4.tar.bz2
qui a-t-il comme différences entre ces 2 archives ?
merci d'avance pour votre aide.

bernard
  • # GCC: GNU Compiler Collection

    Posté par  . Évalué à 3.

    qui a-t-il comme différences entre ces 2 archives ?

    GCC était initialement un compilateur C, puis est devenu une suite de compilateurs. Donc en gros, ton premier tarball est le package de base qui contient le compilateur C et toutes les infrastructures sur lequelles les autres vont s'appuyer, le second contient l'extension C++ qui va permettre de bâtir g++ en plus. Tu trouveras pratiquement un tarball par type de compilo, tous s'appuyant sur le premier.

    Par contre si tu es débutant sous Linux et sous C++, je te déconseille d'entreprendre la recompilation et l'installation d'une suite de compilateurs à partir des sources.

    Ton gcc/g++ actuel est probablement fourni sous forme de RPM. Récupère le RPM le plus récent auprès de RedHat pour la FC2, et fait une mise à jour. Tout fonctionnera tout seul.

    Maintenant gcc 3.3.3 est relativement récent. Si en plus tu débutes, tu ne devrais pas avoir besoin de mettre ton compilateur à jour.
    • [^] # Re: GCC: GNU Compiler Collection

      Posté par  (site web personnel) . Évalué à 3.

      > GCC était initialement un compilateur C, puis est devenu une suite de compilateurs.

      Toutafé. GCC était « GNU C Compiler » et est devenu « GNU Compiler Collection ».

      > ton premier tarball est le package de base

      A priori, non, c'est le package complet, avec tous les langages (qui contient donc entre autres gcc-g++). Celui dont tu parles est gcc-core.

      > je te déconseille d'entreprendre la recompilation et l'installation d'une suite de compilateurs à partir des sources.

      Pareil. C'est un des pire logiciels à installer.

      Par ailleurs, si tu tiens _vraiment_ à mettre ton compilo à jour, passes direct a la 4.0, ça fera une upgrade de moins à faire à l'avenir.
    • [^] # Re: GCC: GNU Compiler Collection

      Posté par  . Évalué à 1.

      re bonjour Robin...
      comme débutant, je suis déjà dans l'informatique industrielle et embarquée depuis quelques années, mais jamais sous Linux et c++.
      en fait, j'ai des erreurs de link, et je me pose la question si j'ai les bonnes librairies pour le C++.
      En installant une version plus récente, cela réglerait mon problème.... peut-être... si mes suppositions sont correctes... ???

      telle est ma démarche.
      je m'en vais de ce pas voir les rpms disponibles.
      merci
      a+
      • [^] # Re: GCC: GNU Compiler Collection

        Posté par  . Évalué à 2.

        undefined reference to `operator delete[](void*)

        Si tu as une référence indéfinie, c'est que ton programme fait appel à une fonction qu'il ne retrouve ni dans les bibliothèques externes, ni dans ton propre programme.

        Donc, neuf fois sur dix, c'est parce que tu as oublié de d'écrire la fonction que tu appelles. L'erreur n'apparaît qu'à l'édition des liens car tu as tout-à-fait le droit de définir tes différentes fonctions dans des fichiers séparés, voire même déjà existants (principe de la bibliothèque).

        En l'occurence, c'est un peu plus subtil : Tu déclares un destructeur à la fois online et virtuel, ce qui est franchement tordu. Donc, le compilateur fait implicitement appel à une fonction delete[] tout aussi personalisée et qui, bien sûr, n'existe pas.

        Relis les commentaires de ton précédent post et tout devrait rentrer dans l'ordre.
        • [^] # Re: GCC: GNU Compiler Collection

          Posté par  . Évalué à 1.

          ce qui m'ennuie, c'est que c'est une application dèjà développée et qui a été compilé pour VxWorks.
          Il est vrai que tout a été généré en code relogeable. Mais bon.
          Alors ce pb de undefined reference me laisso coac.
          si je laisse le destructeur en virtuel (sans les {} et le ;) comme l'indique ton conseil, l'erreur reste.
          Si j'enlève le "virtual", il me dit que le destructeur ne l'est pas pour pour une classe qui l'est.
          Et là, mon c++ est un peu limité.
          Je ne sais pas poursuivre.
          De la même manirère l'édition de lien m'indique ;
          Container_Error::Container_Error(char const*, char const*) »:
          sources/except.cpp:108: undefined reference to `vtable for Container_Error
          sources/except.cpp:108:undefined reference to `vtable for __cxxabiv1::__class_type_info'
          ...
          ???

          :o(
          pour arreter une balise, c'est quoi, il y a < i >, < u >,... et la fin ?
          • [^] # Re: GCC: GNU Compiler Collection

            Posté par  . Évalué à 1.

            Comment être sûr d'avoir les bonnes librairies installées?
            checker les paquetages ?
            Et dans le link comment savoir quelles librairies à linker ?

            merci d'avance.
            • [^] # Re: GCC: GNU Compiler Collection

              Posté par  . Évalué à 1.

              bonjour
              finalement mes problèmes ont été résolus pour la plupart avec une librairie rajoutée :
              -lstdc++
              Sur le précédent post, je présentais une lib en moins !
              bien vu ;-)
              Maintenant, reste plus qu'à matter mon erreur
              undefined reference to `__dso_handle'
              a priori, une petite recherche vers les GNU binutils en perspective.
              Enfin, de l'aide n'est pas de refus
              a+
              • [^] # Re: GCC: GNU Compiler Collection

                Posté par  . Évalué à 0.

                Suite à tous mes problèmes de librairies ET de taille de partitions, j'ai reformaté et réinstallé FC2.
                Maintenant, j'ai un paquetage GCC cohérent (enfin je pense), et de la place !
                Mon make aboutit sur des erreurs de link :

                //categories/cppbooch/object/Linux/except.o(.gnu.linkonce.d._ZTI9Exception+0x0):sources/except.cpp:66: undefined reference to `vtable for __cxxabiv1::__class_type_info'
                /categories/cppbooch/object/Linux/except.o(.gnu.linkonce.d._ZTI9Duplicate+0x0):sources/except.cpp:66: undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
                /categories/cppbooch/object/Linux/except.o(.gnu.linkonce.d.DW.ref.__gxx_personality_v0+0x0):sources/except.cpp:66: undefined reference to `__gxx_personality_v0'
                categories/cppbooch/object/Linux/shared.o(.text+0x104): dans la fonction « Shared::~Shared() »:
                sources/shared.cpp:71: undefined reference to `__cxa_allocate_exception'
                /categories/cppbooch/object/Linux/shared.o(.text+0x13b):sources/shared.cpp:71: undefined reference to `__cxa_free_exception'
                /cppbooch/object/Linux/shared.o(.text+0x149):sources/shared.cpp:71: undefined reference to `_Unwind_Resume'
                /categories/cppbooch/object/Linux/shared.o(.text+0x166):sources/shared.cpp:71: undefined reference to `__cxa_throw'
                /categories/cppbooch/object/Linux/u_str.o(.text+0x50): dans la fonction « catenate(char const*, char const*) »:
                sources/u_str.cpp:52: undefined reference to `operator new[](unsigned int)'
                /categories/cppbooch/object/Linux/u_float.o(.text+0x744): dans la fonction « based_image »:
                sources/u_float.cpp:175: undefined reference to `operator delete(void*)'
                /categories/support/object/Linux/Mrstring.o(.text+0x1044): dans la fonction « __static_initialization_and_destruction_0 »:
                sources/Mrstring.cpp:58: undefined reference to `__dso_handle'
                /categories/mesures/object/Linux/Catalogue_Historiques.o(.text+0x233): dans la fonction « Catalogue_Historiques::ajouter_Historique(MrString const&, int) »:
                sources/Catalogue_Historiques.cpp:144: undefined reference to `operator new(unsigned int)'
                /categories/composants.reelnew/object/Linux/Protocole.o(.gnu.linkonce.d._ZTV9Protocole+0xc):
                /categories/composants.reelnew/include/Protocole.hh:77: undefined reference to `__cxa_pure_virtual'
                make: *** [pirrat] Erreur 1

                avec les options de ld
                -d -M -X -warn-once -L. -lm -ldl -lpthread
                par contre, je veux rajouter la lib libstdc++, car je crois que c'est l'origine des erreurs de link ci-dessus (à moins que ? ).
                dois-je écrire -lstdc++ ou -llibstdc++ ?
                il ne la trouve pas.
                pourtant j'ai le path
                PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/dev:/usr/lib

                help me....

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.