Comment utiliser le dernier GCC sur Ubuntu?

132

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

Ubuntu 14.04 est livré avec gcc 4.8.2, mais il y a 4.9.0 disponible, d' ailleurs, je vois qu'il est disponible en tant que package: 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 par défaut? Comment puis-je l'utiliser pour construire mon programme?

Nickolai Leschov
la source
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.6Tous sont en repo principale Ubuntu .
1
@Dumindu Mais comment puis-je utiliser gcc-4.9spécifiquement?
Nickolai Leschov
Désinstallez les autres et installez 4.9.
2
@Dumindu Attends, tu viens de me dire de faire ce que je viens de faire? Ça ne marche pas.
Nickolai Leschov
Basculez vers l'utilisateur root: sudo su -allez /usr/binpuis lancez ls -l gcc*et publiez votre sortie. alors je posterai votre réponse.
αsнιη

Réponses:

196

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

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++, fera g++basculer avec gcc, à la même version. Mais à ce stade, gcc-4.9 sera votre seule version configurée 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 lequel est défini et le changer en utilisant:

sudo update-alternatives --config gcc

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


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

SudoSURoot
la source
Merci pour la modification @muru ... comme je le disais ci-dessous, je suis restée debout pendant environ 3 jours et la mise à jour-alternatives nécessite un sudo et je pense avoir oublié le (-) avant esclave. :) Alors merci.
SudoSURoot
Essayezsudo apt-get -f install
SudoSURoot
4
Cela fonctionne parfaitement. En outre, remplacer 5dans pour 4.9obtenir GCC 5 travailler sur Ubuntu. (Mon équipe de développement utilise maintenant les méthodes 4.9 et 5 en suivant votre méthode.) Merci, et +1!
CodeMouse92
2
@hwat Cela devrait fonctionner pour le gcc-6moment.
Edwinksl
1
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 pouvez utiliser! GCOV, par exemple, se plaindra d'une incompatibilité de version si vous ne le faites pas, produisant éventuellement des données incorrectes.
Toby
23

Utilisez le PPA Toolchain Test Builds :

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 pour le moment. Le paquet de base ( gcc-4.9-base ) et le compilateur GCC Go 4.9 ( gccgo-4.9 ) sont disponibles, mais les autres interfaces ne le sont pas. Je ne sais pas pourquoi

muru
la source
1
@SudoSURoot, il peut ou non être défini par défaut, ce n'est pas ma préoccupation (il existe d'autres publications traitant de cela). Cependant, les interfaces C et C ++ de GCC 4.9 peuvent être installées le 14.04 uniquement à partir des référentiels officiels, ce qui est manifestement faux, car le gcc-4.9-basepackage ne contient pas et ne contiendra pas d’interface binaire.
Muru
Vous avez raison à propos du 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é, de question ... Parce que le simple ajout du PPA et de l'installation de la version 4.9 ne lui permet pas d'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 devrait se concentrer. J'ai sauté aux conclusions ... et commenté trop vite. En fait, je suis assez nouveau avec 14.04 depuis que je suis un serveur dédié. Je vais m'assurer que je n'ai pas voté à la baisse et je le corrigerai si je le faisais.
SudoSURoot
@SudoSURoot bien. Même dans ce cas, à moins que OP n'ait un problème avec l'appel gcc-4.9ou à la g++-4.9place de gccou g++, je m'en tiendrai à ne pas mettre à jour les alternatives.
Muru
Je comprends parfaitement. Je construis cependant des systèmes Android, qui utilisent beaucoup de $ (dont gcc) et de $ (quel g ++), etc ... Donc, je dois toujours avoir les valeurs par défaut de la version que je veux utiliser. Une partie du code de mon noyau ne compilait pas 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 l'avoir rappelé cependant ... Comme je l'ai dit dans mon édition, du dernier commentaire, j'ai peut-être voté par anticipation, prématurément, si c'est le cas, je vais le réparer. Cela faisait 2 ou 3 jours que je travaillais sur la source de mon noyau lorsque je les publiais. Tout le monde a ses manières ... Je trouve que plus ma réponse est complète, moins il y a de questions
SudoSURoot
Le dernier paquet en date est GAB-7 ATM
Elder Geek
5

Ubuntu 16.04 et plus tard

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 versions ultérieures, ouvrez le terminal et tapez:

sudo apt install gcc-8

Pour installer gcc-9 dans Ubuntu 19.04 et versions ultérieures, ouvrez le terminal et tapez:

sudo apt install gcc-9

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 
Karel
la source
3

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

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

Notez que le gcc par défaut est probablement encore 4.8. (Utilisez-le gcc -vpour vérifier cela.) Malheureusement, changer la valeur par défaut n’est pas une mince affaire si vous avez installé gcc-4.9 à partir du référentiel par défaut car il n’a pas ajouté d’entrée de update-alternatives. Si vous souhaitez modifier la valeur par défaut, reportez-vous aux réponses à cette question .

holocronweaver
la source
Comment créer un projet en utilisant makefile et éventuellement une autre infrastructure de compilation avec gcc-4.9au lieu de gcc?
Nickolai Leschov
1
Le meilleur moyen de vous assurer que gcc-4.9 est utilisé dans les systèmes de construction est de changer le gcc par défaut. Suivez le lien que j'ai fourni dans ma réponse pour savoir comment faire cela. Alternativement, vous pouvez créer un lien symbolique, bien que 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 à la valeur par défaut de gcc-4.8, il suffit de remplacer 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 (à l’exception du compilateur GCC Go ). Par conséquent, bien que cette réponse fonctionne probablement dans Ubuntu 14.10, elle n’aide en rien pour le moment. :-)
Søren Løvborg
En réalité, il est disponible dans Ubuntu 14.04, bien que cela ait pu être une erreur: packages.ubuntu.com/trusty/gcc-4.9-base . Je l'utilise depuis avril.
holocronweaver
0

OK faisons ceci:

GCC   9 8 7 6 5 4
19.04 M D M M
18.10   D M M M
18.04 P M D M M
16.04 P P P P D M

Toutes les questions:

Ciro Santilli 改造 心 心 心
la source