web-dev-qa-db-fra.com

Installer gcc 4.8 sur Debian

Je veux commencer à jouer avec certaines des nouvelles fonctionnalités C++ 11 et il semble que le meilleur support pour cela est avec gcc 4.8 et Squeeze est livré avec 4.4.5.

Cependant, je ne veux pas endommager ma configuration actuelle. Quelle est la meilleure façon d'obtenir les deux versions de gcc fonctionnant côte à côte? Je suis principalement préoccupé par le grand nombre de dépendances et que leur intégration à mon système actuel puisse le rendre instable.

Quelqu'un a-t-il réussi à le faire et quelles sont les étapes à suivre?

À défaut, je vais probablement créer un VM et exécuter une Debian "instable" sous cela, mais c'est une solution loin d'être idéale.

27
paxdiablo

Si vous installez GCC à partir des sources, assurez-vous de ne pas l'installer sur /usr et ça ne gâchera rien. Si vous l'installez en tant que votre propre utilisateur, pas root, il n'y a aucune chance de gâcher le système.

Voir http://gcc.gnu.org/wiki/InstallingGCC pour la configuration minimale quasi-idiot-proof.

J'ai différentes versions construites en tant qu'utilisateur et installées dans ~/gcc/4.X pour divers X.

La seule chose à savoir sur l'utilisation de cette configuration est que les bibliothèques partagées pour la nouvelle version ne sont pas dans le chemin de recherche par défaut de l'éditeur de liens dynamique, vous devez donc utiliser LD_LIBRARY_PATH ou une autre solution pour s'assurer que les exécutables trouvent les bibliothèques à partir de la 4.8, voir libstdc ++ FAQ et la page à laquelle il renvoie dans le manuel

J'utilise un appel de script wrapper g++11 qui appelle simplement la nouvelle version de GCC avec -std=gnu++11 et transmet un indicateur à l'éditeur de liens lui indiquant de définir le chemin d'accès aux 4,8 bibliothèques de l'exécutable:

$HOME/gcc/4.8/bin/g++ -Wl,-rpath,$HOME/gcc/4.8/lib64 -std=gnu++11 -Wall -Wextra -g "$@"
34
Jonathan Wakely

J'ai eu le même problème et je ne voulais pas passer entièrement aux tests.

Jessie (testing) contient maintenant g ++ - 4.8 qui est compatible avec C++ 11.

J'ai utilisé l'épinglage apt de la manière suivante:

Une source pour jessie a été ajoutée à /etc/apt/sources.list:

deb http://ftp.uk.debian.org/debian/ jessie main non-free contrib

/ etc/apt/preferences a été modifié comme tel:

Package: *
Pin: release n=wheezy
Pin-Priority: 900

Package: gcc*
Pin: release n=jessie
Pin-Priority: 910

Alors,

$ Sudo aptitude update
$ Sudo aptitude install gcc/jessie

À ce stade, j'ai sélectionné la deuxième option présentée pour résoudre complètement les dépendances.

16
zek19

Debian a le paquet sous le nom gcc-4.8 (ou pour le compilateur c ++, g ++ - 4.8). L'installation de ces packages ne gâchera pas votre système d'exploitation, tant que vous ne le renommez pas en g ++. Le package est cependant répertorié comme expérimental.
Les informations sur le package sont ici .

Mise à jour: g ++ - 4.8 est maintenant dans testing , mais un paquet mis à jour est dans nstable

6
JKor

Rapides:

  1. Il suffit de passer aux tests, il est solide et vous propose plusieurs versions simultanées de gcc. Similaire pour Ubuntu, le 12.10, j'ai gcc/g ++ 4.4, 4.5, 4.6 et 4.7 en parallèle.

  2. Essayez l'archive des backports Debian, elle peut avoir un port de gcc 4.8.

  3. Utilisez la virtualisation: je préfère libvirt/kvm qui est incroyablement léger sous Linux car il est basé sur le noyau. Mon serveur AMD64 a deux autres installations 32 bits pour cette raison.

  4. Pas vraiment une SO question ...

2
Dirk Eddelbuettel

Avez-vous essayé chroot pour installer une nouvelle version de Debian?

1
ksysctl