Mise à jour vers les derniers gcc et g ++ sur Ubuntu 16.04

11

J'ai récemment essayé de rétrograder vers gcc 4.7 car un code cfd sur lequel je travaillais ne compilait pas avec la dernière version de gcc. Mais après de nombreuses erreurs et le code ne compilant toujours pas, j'ai abandonné et j'aimerais revenir aux derniers compilateurs gcc et g ++, mais il semble que j'ai peut-être foiré quelque chose.

Quand je fais:

sudo update-alternatives --remove-all gcc 
sudo update-alternatives --remove-all g++
sudo apt-get install gcc-6.2 g++-6.2

ou même gcc-5.1 g ++ - 5.1 d'ailleurs, cela me donne l'erreur suivante

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package gcc-6.2
E: Couldn't find any package by glob 'gcc-6.2'
E: Couldn't find any package by regex 'gcc-6.2'
E: Unable to locate package g++-6.2
E: Couldn't find any package by glob 'g++-6.2'
E: Couldn't find any package by regex 'g++-6.2'

et j'ai aussi essayé de faire ça avant

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

mais cela ne semble pas fonctionner. Enfin quand je fais juste

sudo apt-get install gcc

ça dit

Reading package lists... Done
Building dependency tree       
Reading state information... Done
gcc is already the newest version (4:5.3.1-1ubuntu1).

Je sais que je dois encore installer et configurer des alternatives, mais cela ne fonctionne pas non plus comme suit

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5.3 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5.3 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++
sudo update-alternatives --config gcc
sudo update-alternatives --config g++

Désolé, cela s'est terminé assez longtemps et faites-le moi savoir si vous avez besoin de plus d'informations. Merci!

EDIT: Je l'ai fait fonctionner en changeant gcc-5.3 en gcc-5 dans le code ci-dessus car cela semblait être ce qu'on appelle dans usr / bin. Je le garderai pour référence future si quelqu'un est confronté au même problème.

thephysicsguy
la source
2
AFAIK gcc et g ++ ne s'installent pas comme alternatives de mise à jour par défaut - à la place, les packages de dépendance gccet g++installent des liens directs vers les dépendances par défaut, comme /usr/bin/g++ -> g++-5. Avez-vous essayé de réinstaller simplement les packages gccet g++?
steeldriver
Une façon d'éviter ce type de problèmes consiste à créer une machine virtuelle et à y installer l'ancienne version du compilateur.
NZD
Ce correctif peut être résolu dans l'installation Lecture des listes de packages ... Terminé Construction de l'arborescence des dépendances Lecture des informations d'état ... Terminé gcc est déjà la version la plus récente (4: 7.3.0-3ubuntu2.1). 0 mis à niveau, 0 nouvellement installé, 0 à supprimer et 36 non mis à niveau.
JOC KERS

Réponses:

5

Exécutez les commandes suivantes dans l'ordre. J'obtenais la même erreur. Cela a fonctionné pour moi.

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-snapshot
sudo apt-get install gcc-6 g++-6
Milind
la source
9
Pourquoi a-t sudo apt-get update-il été exécuté trois fois au lieu de la première fois? En particulier, pourquoi après la dernière installation du package?
Eliah Kagan
Que fait exactement gcc-snapshot? Comment puis-je supprimer la version précédente de gcc (4.8.4)?
abunickabhi
0

La mise à jour d'apt-get doit être exécutée pour que votre ordinateur accède au référentiel qui vient d'être ajouté, mettant ainsi son contenu à votre disposition. Si vous ne l'exécutez pas, votre ordinateur ne sait pas qu'il dispose des informations de ce référentiel.

def
la source