Як я можу використовувати останню GCC на Ubuntu?


132

Я хочу скласти свою програму з останньою версією gcc.

Ubuntu 14.04 поставляється з GCC 4.8.2, однак є 4.9.0 доступні, крім того, я бачу , що він доступний у вигляді пакету: gcc-4.9. Я намагався його встановити

sudo apt-get install gcc-4.9

але це говорить

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.

Схоже, він уже встановлений, тільки не як стандартний? Як я можу використовувати його для створення своєї програми?


Якщо ви хочете встановити gcc-4.8, вам потрібно скористатися sudo apt-get install gcc-4.8. gcc-4.9, gcc-4.8, gcc-4.7, gcc-4.6Все вони знаходяться в Ubuntu основний репозиторій .

1
@Dumindu Але як мені gcc-4.9конкретно користуватися?
Микола Лещів

Видаліть інші та встановіть 4.9.

2
@Dumindu Зачекай, ти щойно сказав мені зробити те, що я тільки що зробив? Це не працює.
Микола Лещів

перейти на root користувача: sudo su -goto /usr/binпотім запустіть ls -l gcc*та опублікуйте свій вихід. тоді я опублікую вашу відповідь.
αғsnιη

Відповіді:


196

Найкращий спосіб правильно встановити gcc-4.9 і встановити його як використання своєї стандартної версії gcc:

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

--slave, З g++, призведе до того , g++щоб включити разом з gcc, однієї і тієї ж версії. Але, на цей момент gcc-4.9 буде вашою єдиною версією, налаштованою update-alternatives, тому додайте 4.8 до update-alternatives, так що насправді є альтернатива, використовуючи:

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

Потім ви можете перевірити, який з них встановлено, і змінити назад і назад, використовуючи:

sudo update-alternatives --config gcc

ПРИМІТКА. Ви можете пропустити встановлення сховища PPA і просто використовувати, /usr/bin/gcc-4.9-baseале я вважаю за краще використовувати свіжі оновлені ланцюги інструментів.


Для GCC 5.X або 6 пакети (і відповідно команди) просто викликаються gcc-5, gcc-6і т. Д. Це пов'язано зі зміною схеми версій GCC , де 5.1 - перший випуск GCC 5, і майбутні 5.X випуски призначені для виправлення помилок .


Дякую за редагування @muru ... як я вже говорив нижче, я був близько 3-х днів дуже втомлений і для оновлення альтернативи вимагає судо, і я думаю, що я забув (-) перед рабом. :) Отже, дякую.
SudoSURoot

Спробуйтеsudo apt-get -f install
SudoSURoot

4
Це прекрасно працює. Крім того , замінити 5протягом 4.9отримати GCC 5 працює на Ubuntu. (Моя команда розробників тепер працює як 4,9, так і 5 поряд з іншим за вашим методом.) Дякую і +1!
CodeMouse92

2
@hwat Це має працювати gcc-6зараз.
edwinksl

1
Це допомогло мені кілька разів, але я завжди забуваю - обов'язково застосуйте те саме рішення до інших утиліт у колекції компілятора GNU, яку ви можете використовувати! Наприклад, GCOV скаржиться на невідповідність версії, якщо ви цього не зробите, можливо, видаючи невірні дані.
Тобі

23

Використовуйте тест-ланцюжок інструментів збірки PPA :

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

Я не думаю, що GCC 4.9 ще не доступний для Ubuntu 14.04. Базовий пакет ( gcc-4.9-base ) та компілятор GCC Go 4.9 ( gccgo-4.9 ) доступні, але інші фронтенди - ні. Я не знаю чому.


1
@SudoSURЗапитання це може бути, а може і не бути встановлене за замовчуванням, це не викликає мого занепокоєння (є й інші пости, які займаються цим). Однак те, що фронти C та C ++ GCC 4.9 можуть бути встановлені 14.04 виключно з офіційних сховищ, очевидно помилково, оскільки gcc-4.9-baseпакет не містить і не містить бінарного фронту.
муру

Ви вірно ставитесь до базового пакету. Як ви побачите у моїй відповіді, я використав PPA. Я опублікував коментар спочатку, потім відповів на запитання, як було зазначено, з питання ... Тому що просто додавання PPA та встановлення 4.9 не дозволяє йому використовувати "gcc 4.9". Я повинен був видалити коментар після того, як я відповів на питання. Я прошу вибачення. Моя відповідь - на що слід зосередити увагу. Я прискочив до висновків ... і швидко прокоментував. Я насправді досить новий з використанням 14.04, оскільки я отримав мені виділений сервер. Я гонг, щоб переконатися, що я не відмовився від голосування, і я виправлю це, якщо це зробив
SudoSURoot

@SudoSURoot добре. Тим не менш , якщо ОП не має проблеми з викликом gcc-4.9або g++-4.9замість gccабо g++, я буду дотримуватися не оновлюючи альтернативи.
муру

Я цілком розумію. Хоча я будую системи Android, які використовують багато $ (котрий gcc) та $ (котрий g ++) тощо ... Тому мені завжди доводиться мати типові параметри для тієї версії, яку я хочу використовувати. Деякий мій код ядра не компілюється з хостом gcc-4.8, тому мені довелося оновити. Я просто повторив те, що працювало на мене. Дякую, що нагадали мені, як ... Як я вже говорив у своїй редакції, з останнього коментаря я, можливо, достроково проголосував, якщо так, я це виправлю. Я працював над моїм джерелом ядра 2 або 3 дні, коли публікував їх. У кожного є свої шляхи ... Я просто знайшов більш ретельну свою відповідь на менше запитань
SudoSURoot

Останній пакет - банкомат gcc-7
Elder Geek

5

Ubuntu 16.04 та новіших версій

Ви можете вже встановити gcc 7.0 в Ubuntu 18.04 із сховищ за замовчуванням. Щоб встановити gcc-7 в Ubuntu 17.10, 18.04 та 18.10, відкрийте термінал і введіть:

sudo apt install gcc-7 

Щоб встановити gcc-8 в Ubuntu 18.04 та пізніше, відкрийте термінал і введіть:

sudo apt install gcc-8

Щоб встановити gcc-9 в Ubuntu 19.04 та пізніше, відкрийте термінал і введіть:

sudo apt install gcc-9

Ви можете встановити gcc-7 в Ubuntu 16.04 з ppa: jonathonf / gcc-7.1.

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

Ви можете встановити gcc-8 в Ubuntu 16.04 з ppa: jonathonf / gcc-8.0.

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

3

Щоб викликати gcc 4.9, використовуйте gcc-4.9командний рядок.

Усі встановлені вами версії gcc можна викликати окремо, додавши дефіс та номер версії в кінці gcc. У вашому випадку, gcc-4.8і gcc-4.9повинні бути доступні. У терміналі введіть gcc-(зверніть увагу на дефіс) та клавішу двічі, щоб побачити, чи встановлені інші версії.

Зауважте, що за замовчуванням gcc, ймовірно, ще 4,8. (Використовуйте gcc -vдля перевірки цього.) На жаль, зміна за замовчуванням не є тривіальною, якщо ви встановили gcc-4.9 із сховища за замовчуванням, оскільки він не додав альтернативи оновлення. Якщо вас цікавить, як змінити типовий стандарт, дивіться відповіді на це запитання .


Як я можу зробити проект, спираючись на makefile та, можливо, іншу побудову інфраструктури для побудови gcc-4.9замість gcc?
Микола Лещів

1
Найкращий спосіб переконатися, що gcc-4.9 використовується в системах збирання - це змінити gcc за замовчуванням. Перейдіть за посиланням, яке я надав у своїй відповіді, як це зробити. Крім того, ви можете створити символічне посилання, хоча я рекомендую проти цього, за винятком як в крайньому випадку, оскільки менеджер пакунків може скаржитися під час оновлення gcc. Якщо ви наполягаєте: sudo rm /usr/bin/gcc; sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc. Щоб повернутись до стандартних стандартів gcc-4.8, просто замініть gcc-4.9 на gcc-4.8. Можливо, вам доведеться це робити і з g ++ та іншими компіляторами GNU.
holocronweaver

GCC 4.9 недоступний у Ubuntu 14.04 (за винятком компілятора GCC Go ), тому, хоча ця відповідь, ймовірно, працює в Ubuntu 14.10, зараз це не допомагає. :-)
Søren Løvborg

На насправді він доступний в Ubuntu 14.04, хоча це , можливо, було помилкою: packages.ubuntu.com/trusty/gcc-4.9-base . Я використовую його з квітня.
holocronweaver

0

Добре, зробимо це:

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
  • D : GCC за замовчуванням

    sudo apt-get update
    sudo apt-get install gcc-X g++-X
    gcc-X --version
    

    Незалежно від gccпсевдоніму пакета: https://packages.ubuntu.com/search?keywords=gcc

  • М : Присутні в Майн Репо

    sudo apt-get update
    sudo apt-get install gcc-X g++-X
    gcc-X --version
    

    Наприклад: https://packages.ubuntu.com/search?keywords=gcc-7

  • P :, ppa:ubuntu-toolchain-r/testякий належить людям Ubuntu, і тому йому можна довіряти, що він не є вірусом, хоча це, можливо, нестабільно:

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

    https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test

Усі питання:

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