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 Obsidian . Évalué à 3.
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 Matthieu Moy (site web personnel) . Évalué à 3.
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 Obsidian . Évalué à 2.
Oups ! Bien vu !
Le pire c'est que je m'y suis déjà collé il y a quelque temps :
https://linuxfr.org/forums/19/3922.html(...)
[^] # Re: GCC: GNU Compiler Collection
Posté par Bernard G. . Évalué à 1.
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 Obsidian . Évalué à 2.
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 Bernard G. . Évalué à 1.
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 Bernard G. . Évalué à 1.
checker les paquetages ?
Et dans le link comment savoir quelles librairies à linker ?
merci d'avance.
[^] # Re: GCC: GNU Compiler Collection
Posté par Bernard G. . Évalué à 1.
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 Bernard G. . Évalué à 0.
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.