Оновлення до останніх gcc та g ++ на Ubuntu 16.04


11

Нещодавно я намагався перейти на gcc 4.7, оскільки код cfd, над яким я працював, не компілювався з останньою версією gcc. Але після багатьох помилок і коду, який все ще не компілюється, я відмовився і хотів би повернутися до останніх компіляторів gcc і g ++, однак, схоже, я щось зіпсував.

Коли я роблю:

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

або навіть gcc-5,1 g ++ - 5,1 з цього приводу, це дає мені наступну помилку

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'

і я теж намагався це робити раніше

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

але це, здається, не працює. Нарешті, коли я це просто роблю

sudo apt-get install gcc

він говорить

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

Я знаю, що мені все-таки потрібно встановити та налаштувати альтернативи, але це не працює як наступним чином

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++

Вибачте, це закінчилося досить довго, і, будь ласка, повідомте мене, якщо вам потрібна додаткова інформація. Дякую!

EDIT: Я фактично змусив його працювати, змінивши gcc-5.3 на gcc-5 у наведеному вище коді, оскільки це, здавалося, називається в usr / bin. Я буду зберігати це для подальшого ознайомлення, якщо хтось зіткнеться з тією ж проблемою.


2
AFAIK gcc і g ++ не встановлюють як альтернативи оновлення за замовчуванням - натомість пакети gccі g++залежності встановлюють прямі посилання на залежності за замовчуванням, наприклад /usr/bin/g++ -> g++-5. Ви спробували просто перевстановити пакети gccта g++пакети?
steeldriver

Одним із способів уникнути подібного типу проблем є створення VM та встановлення там старої версії компілятора.
NZD

Це виправлення можна зафіксувати у списках пакетів для встановлення читання ... Готово дерево залежності залежно від зчитування Інформація про стан читання ... Готово gcc - це вже остання версія (4: 7.3.0-3ubuntu2.1). 0 оновлених, 0 нещодавно встановлених, 0 для видалення та 36 не оновлених.
JOC KERS

Відповіді:


5

Виконайте наступні команди послідовно. Я отримував таку ж помилку. Це працювало для мене.

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

9
Чому sudo apt-get updateйого запускають тричі замість того, щоб не вперше? Зокрема, чому після встановлення останнього пакета?
Елія Каган

Що саме робить gcc-знімок? Як я можу видалити попередню версію gcc (4.8.4)?
abunickabhi

0

apt-get update необхідно запустити, щоб ваш комп'ютер отримав доступ до щойно доданого сховища, таким чином, зробивши його вміст доступним для вас. Якщо ви не запускаєте його, то ваш комп'ютер не знає, що він має доступну інформацію про репозіторів

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.