Comment installer g ++ 4.7.2 & c ++ 11 sur CentOS 5.x?

8

J'essaie d'installer la dernière version stable g++et c++11. Mon hôte l'a fait yum installet a pensé que c'était le dernier, mais ce n'est pas le cas, et ils disent maintenant que cela dépasse leur niveau de soutien.

J'ai cherché partout comment faire cela, et je ne peux rien faire fonctionner, ou je n'ai aucune idée de ce que la solution suggérée dit.

Quelle est la façon la plus simple d'installer g++4.7.2 et c++11sur CentOS 5.9 ?

jasonwryan
la source
2
Je ne vois rien en cela qui (à mes yeux très inexpérimentés) nécessite une nouvelle fonctionnalité C ++. Pour installer un logiciel supplémentaire (à partir de la source, pas moins) ne doit pas être pris à la légère (si vous utilisez CentOS, c'est probablement une application d'entreprise). Pas pour quelqu'un avec des heures d'expérience Linux, en tout cas. Repensez soigneusement vos options.
vonbrand
1
qu'est-ce qui nécessite lambda avec tant d'insistance? Peut-être que votre meilleur pari est d'installer la dernière Fedora, où gcc-4.7.2 est le compilateur par défaut, maintenu par la distribution ?
vonbrand
2
Je ne suis pas un expert en C ++, mais "trier par N-ième int dans un vecteur d'int" nécessite une comparaison entre les vecteurs, et ce n'est pas une exigence exotique uniquement pour être rempli avec le dernier C ++. Bien sûr, cela pourrait être plus facile, mais si quelque chose d'aussi simple ne pouvait pas être fait à partir des toutes premières versions de STL, je serais complètement sidéré. Obtenez un expert C ++ à bord?
vonbrand
Avez-vous pensé aux bibliothèques BOOST? Un grand pourcentage de C ++ 11 est venu de là ...
Aaron D. Marasco
c ++ 11 n'est pas un compilateur, c'est un standard. voir ma réponse.
PersianGulf

Réponses:

9

De cette réponse à "Installer gcc 4.7 sur CentOS [6.x]", le moyen le plus simple d'obtenir g++4.7 et les outils et bibliothèques requis pour CentOS 5.x est via le devtoolspackage:

cd /etc/yum.repos.d
wget http://people.centos.org/tru/devtools/devtools.repo 
yum --enablerepo=testing-devtools-6 install devtoolset-1.0

Puisque vous utilisez g++manuellement (par opposition à travers make), vous devez mettre à jour votre $PATHvariable de sorte que votre shell utilisera le nouveau gcc, g++etc. binaires:

export PATH=/opt/centos/devtoolset-1.0/root/usr/bin/:$PATH

À ce stade, votre g++devrait être la version 4.7.0

$ g++ --version
g++ (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

N'oubliez pas que l'installation gccet les outils et bibliothèques associés de cette manière dépendent du mainteneur du référentiel pour maintenir leurs packages à jour.

Si vous souhaitez garder votre gccmise à jour, vous pouvez envisager de construire à gccpartir de la source .

En outre, la compilation de programmes avec une version différente de g++et libstdc++installée sur votre système peut provoquer toutes sortes de divertissements , ce qui dépasse la portée de cette réponse. Il peut être utile de passer à une distribution Linux qui prend en charge ce que vous faites.

Reed Kraft-Murphy
la source
J'ai mis à jour les instructions - le package que vous souhaitez yuminstaller est devtoolset-1.0, car il contient d'autres outils de développement requis; et vous voudrez mettre à jour votre $PATHvariable depuis le lancement à g++partir de la ligne de commande.
Reed Kraft-Murphy
Lorsque je crée une nouvelle console, gcc est toujours sur l'ancienne version. Comment définir la nouvelle version par défaut?
BT
1
Pour définir cela de manière permanente, vous devez ajouter la export PATH..ligne dans votre ~ / .profile ou ~. / Profile_bash ou équivalent: superuser.com/questions/809250/…
BT
Affiche
1

Les gestionnaires de packages sont excellents, mais (naturellement) n'incluront généralement pas la dernière version du logiciel. CentOS étant une distribution se concentrant particulièrement sur les serveurs, privilégie la stabilité (et les tests approfondis) par rapport aux versions les plus récentes et les plus brillantes. Voici vos solutions:

Changer la distribution

D'autres distributions comme Arch Linux, Sabayon Linux ou Debian "Sid" incluent les versions les plus récentes beaucoup plus rapidement. Vous pouvez envisager de changer les distributions.

Construisez-le vous-même

Si vous êtes bloqué avec CentOS, votre meilleur pari est de construire gcc à partir de la source . Cela signifie obtenir le code source, s'assurer que les dépendances sont déjà présentes sur votre système (sinon, je suis sûr que vous pouvez les obtenir à partir du gestionnaire de packages CentOS), compiler la source dans un exécutable binaire et installer l'exécutable sur votre système .

Ce n'est certainement pas le moyen le plus simple de le faire, mais vous en apprendrez beaucoup sur Unix au cours du processus. Assurez-vous de lire le document plusieurs fois pour vous assurer que vous obtenez tout et posez des questions si quelque chose de précis n'est pas clair.

Sois patient

À un moment donné, cette version (ou plus récente) de gcc / g ++ va entrer dans le gestionnaire de paquets. Si vous attendez (jusqu'à plusieurs mois, je ne connais pas très bien le cycle de publication de CentOS), vous obtiendrez finalement ce que vous voulez.

rahmu
la source
1

Hm, je suis trop nouveau pour commenter la réponse de Reed. Ça a bien marché pour moi. La seule chose que je voulais noter (peut-être que c'est quelque chose pour Reed?), C'est que j'ai dû installer avec une ligne de commande légèrement différente:

yum --enablerepo=testing-devtools-5 install devtoolset-1.0

(La réponse de Reed avait --enablerepo=testing-devtools-6, ce qui n'a pas fonctionné.)

Sean Suchter
la source