Question Comment utiliser le dernier GCC sur Ubuntu?


Je veux compiler mon programme avec la dernière version de gcc.

Ubuntu 14.04 est livré avec gcc 4.8.2, mais il existe 4.9.0, de plus, je vois qu'il est disponible en paquet: gcc-4.9. J'ai essayé de l'installer

sudo apt-get install gcc-4.9

mais ça dit

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'gcc-4.9-base' for regex 'gcc-4.9'
gcc-4.9-base is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

On dirait qu'il est déjà installé, mais pas comme celui par défaut? Comment puis-je l'utiliser pour construire mon programme?


120
2018-05-16 01:11


origine


Si vous voulez installer gcc-4.8 , vous devez utiliser sudo apt-get install gcc-4.8. gcc-4.9 ,gcc-4.8 , gcc-4.7, gcc-4.6 tous sont dans Repos principal Ubuntu.
@Dumindu Mais comment puis-je utiliser gcc-4.9 Plus précisément? - Nickolai Leschov
Désinstallez les autres et installez 4.9.
@Dumindu Attends, tu viens de me dire de faire ce que je viens de faire? Ça ne marche pas. - Nickolai Leschov
passer à l'utilisateur root: sudo su - aller à /usr/bin puis courir ls -l gcc* et publier votre sortie. alors je posterai votre réponse. - αғsнιη


Réponses:


Le meilleur moyen d’installer correctement gcc-4.9 et de le définir comme version de gcc par défaut:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9

le --slave, avec g++, provoquera g++ être commuté avec gcc, à la même version. Mais, à ce stade, gcc-4.9 sera votre seule version configurée dans update-alternatives, ajoutez donc 4.8 à update-alternatives, il existe donc une alternative, en utilisant:

sudo apt-get install gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8

Ensuite, vous pouvez vérifier celui qui est défini et changer d'avant en arrière en utilisant:

sudo update-alternatives --config gcc

REMARQUE: Vous pouvez ignorer l’installation du référentiel PPA et simplement utiliser /usr/bin/gcc-4.9-base mais je préfère utiliser les nouvelles chaînes d'outils mises à jour.


Pour GCC 5.X ou 6, les paquets (et les commandes correspondantes) sont simplement appelés gcc-5, gcc-6, etc. Ceci est dû au changement de Schéma de version de GCC, où 5.1 est la première version de GCC 5, et futures versions 5.X sont pour les corrections de bugs.


175
2018-02-04 06:21



Merci pour le montage @muru ... comme je l'ai dit ci-dessous, j'étais très fatigué pendant environ 3 jours et update-alternatives ne nécessite que sudo et je pense avoir oublié le (-) avant l'esclave. :) Alors merci. - SudoSURoot
Essayer sudo apt-get -f install - SudoSURoot
Cela fonctionne parfaitement. Aussi, substitut 5 dans pour 4.9 faire fonctionner GCC 5 sur Ubuntu. (Mon équipe de développement utilise maintenant 4,9 et 5 suivant votre méthode.) Merci et +1! - CodeMouse92
@hwat Ça devrait marcher pour gcc-6 à présent. - edwinksl
Cela m'a aidé à plusieurs reprises, mais j'oublie toujours - assurez-vous d'appliquer la même solution à d'autres utilitaires de la collection de compilateurs GNU que vous utilisez! GCOV, par exemple, se plaindra d'une incompatibilité de version si vous ne le faites pas, produisant éventuellement des données incorrectes. - Toby


Utilisez le Test de chaîne d'outils: PPA:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9

Je ne pense pas que GCC 4.9 soit entièrement disponible pour Ubuntu 14.04. Le package de base (gcc-4.9 base) et le compilateur GCC Go 4.9 (gccgo-4.9) sont disponibles, mais les autres frontends ne le sont pas. Je ne sais pas pourquoi.


22
2017-07-13 00:04



@SudoSURoot il peut ou non être défini comme valeur par défaut, ce n'est pas mon problème (il y a d'autres articles traitant de cela). Cependant, les frontaux C et C ++ de GCC 4.9 peuvent être installés sur 14.04 uniquement à partir des référentiels officiels est manifestement faux, car le gcc-4.9-base package ne contient pas et ne contiendra pas de frontend binaire. - muru
Vous avez raison sur le package de base. Comme vous le verrez dans ma réponse, j'ai utilisé le PPA. J'ai d'abord posté le commentaire, puis répondu à la question comme indiqué, à partir de la question ... Parce que le simple ajout de la PPA et l'installation de la version 4.9 ne permettent pas de l'utiliser pour "utiliser gcc 4.9". J'aurais dû supprimer le commentaire après avoir répondu à la question. Je m'excuse. Ma réponse est ce sur quoi il faut se concentrer. J'ai sauté aux conclusions ... et commenté rapidement. Je suis en fait assez nouveau avec l'utilisation de 14.04 depuis que je me suis doté d'un serveur dédié. Je suis gong pour m'assurer de ne pas voter et je le réparerai si je le faisais. - SudoSURoot
@SudoSURoot d'accord. Même si, sauf si OP a un problème avec l'appel gcc-4.9 ou g++-4.9 au lieu de gcc ou g++, Je m'en tiendrai à ne pas mettre à jour les alternatives. - muru
Je comprends parfaitement. Je construis des systèmes Android cependant, qui utilisent beaucoup de $ (quel gcc) et $ (quel g ++) etc ... Donc, je dois toujours avoir des paramètres par défaut pour la version que je veux utiliser. Une partie de mon code du noyau ne serait pas compilée avec l'hôte gcc-4.8, j'ai donc dû mettre à jour. Je viens de répéter ce qui a fonctionné pour moi. Merci de me le rappeler cependant ... Comme je l’ai dit lors de mon montage, à partir du dernier commentaire, j’ai peut-être voté, prématurément, si oui je le réparerai. Je travaillais depuis 2 ou 3 jours sur les sources de mon noyau lorsque j'ai posté celles-ci. Tout le monde a ses voies ... Je viens de trouver la réponse la plus approfondie, moins il y a de questions - SudoSURoot
Le dernier paquet est gcc-7 ATM - Elder Geek


Pour appeler spécifiquement gcc 4.9, utilisez gcc-4.9 à l'invite de commande.

Toutes les versions de gcc que vous avez installées peuvent être appelées individuellement en ajoutant un tiret et le numéro de version à la fin de gcc. Dans ton cas, gcc-4.8 et gcc-4.9 devrait être disponible. Dans un terminal, tapez gcc- (notez le trait d'union) et le bouton poussoir deux fois pour voir si d'autres versions sont installées.

Notez que le gcc par défaut est probablement encore 4.8. (Utilisation gcc -v pour le vérifier.) Malheureusement, le changement de valeur par défaut n'est pas trivial si vous avez installé gcc-4.9 à partir du référentiel par défaut car il n'a pas ajouté d'entrée update-alternatives. Si vous êtes intéressé par la façon de modifier la valeur par défaut, consultez les réponses à cette question. cette question.


2
2017-07-13 00:08



Comment créer un projet basé sur makefile et éventuellement une autre infrastructure de construction avec gcc-4.9 au lieu de gcc? - Nickolai Leschov
Le meilleur moyen de s’assurer que gcc-4.9 est utilisé sur tous les systèmes de génération consiste à modifier le gcc par défaut. Suivez le lien fourni dans ma réponse pour savoir comment procéder. Sinon, vous pouvez créer un lien symbolique, mais je le déconseille, sauf en dernier recours, car le gestionnaire de paquets peut se plaindre lors de la mise à jour de gcc. Si vous insistez: sudo rm /usr/bin/gcc; sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc. Pour revenir à gcc-4.8 par défaut, remplacez simplement gcc-4.9 par gcc-4.8. Vous devrez peut-être faire cela avec g ++ et d'autres compilateurs GNU. - holocronweaver
GCC 4.9 n'est pas disponible dans Ubuntu 14.04 (sauf pour le Compilateur GCC Go), alors même que cette réponse fonctionnera probablement dans Ubuntu 14.10, cela n’aide pas maintenant. :-) - Søren Løvborg
En fait, il est disponible dans Ubuntu 14.04, bien que cela puisse être une erreur: packages.ubuntu.com/trusty/gcc-4.9-base. Je l'utilise depuis avril. - holocronweaver


Ubuntu 16.04 et versions ultérieures

Vous pouvez déjà installer gcc 7.0 dans Ubuntu 18.04 à partir des référentiels par défaut. Pour installer gcc-7 dans Ubuntu 17.10, 18.04 et 18.10, ouvrez le terminal et tapez:

sudo apt install gcc-7 

Pour installer gcc-8 dans Ubuntu 18.04 et plus tard, ouvrez le terminal et tapez:

sudo apt install gcc-8

Vous pouvez installer gcc-7 dans Ubuntu 16.04 à partir de ppa: jonathonf / gcc-7.1.

sudo add-apt-repository ppa:jonathonf/gcc-7.1  
sudo apt update  
sudo apt install gcc-7  

Vous pouvez installer gcc-8 dans Ubuntu 16.04 à partir de ppa: jonathonf / gcc-8.0.

sudo add-apt-repository ppa:jonathonf/gcc-8.0  
sudo apt update  
sudo apt install gcc-8 

0
2017-08-15 10:43