Как мне использовать последнюю версию 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 -перейдите к /usr/binзапуску ls -l gcc*и опубликуйте свой вывод. тогда я выложу твой ответ.
— αғsнιη

Ответы:


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 дней очень уставшим, и для обновления альтернатив требуется sudo, и я думаю, что забыл (-) перед ведомым. :) Так что спасибо тебе.
— 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
@SudoSURoot может быть или не быть установленным по умолчанию, это не моя забота (есть другие посты, связанные с этим). Однако то, что интерфейсы C и C ++ GCC 4.9 могут быть установлены 14.04 исключительно из официальных репозиториев, явно неверно, поскольку gcc-4.9-baseпакет не содержит и не будет содержать двоичный интерфейс.
— Муру

Вы правы насчет базового пакета. Как вы увидите в моем ответе, я использовал PPA. Сначала я разместил комментарий, а затем ответил на вопрос, как указано, из вопроса ... Потому что простое добавление PPA и установка 4.9 не активируют его, что необходимо для "использования gcc 4.9". Я должен был удалить комментарий после того, как ответил на вопрос. Я прошу прощения. Мой ответ - на что следует обратить внимание. Я сделал поспешные выводы ... и быстро прокомментировал. Я на самом деле довольно новичок в использовании 14.04, так как я получил свой выделенный сервер. Я собираюсь убедиться, что я не проголосовал против, и я исправлю это, если сделаю.
— SudoSURoot

@SudoSURoot хорошо. Тем не менее, если у OP нет проблем с вызовом gcc-4.9или g++-4.9вместо gccили g++, я буду не обновлять альтернативы.
— Муру

Я полностью понимаю. Я строю системы Android, которые используют много $ (который gcc) и $ (который g ++) и т. Д. Так что мне всегда нужно установить значения по умолчанию на ту версию, которую я хочу использовать. Часть моего кода ядра не будет компилироваться с хостом gcc-4.8, поэтому мне пришлось обновляться. Я просто повторил, что сработало для меня. Спасибо, что напомнили мне, хотя ... Как я уже сказал в своем редактировании, из последнего комментария, я, возможно, проголосовал преждевременно, если да, то я это исправлю. Когда я их опубликовал, я работал в течение 2-3 дней над исходным кодом ядра. У каждого есть свои пути ... Я просто нашел более тщательный ответ, тем меньше вопросов я
— задаю

Последний пакет - банкомат gcc-7
— старейшина Гик

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 из репозитория по умолчанию, так как он не добавил запись об альтернативах обновления. Если вас интересует, как изменить настройки по умолчанию, смотрите ответы на этот вопрос .


Как сделать проект, основанный на make-файле и, возможно, на другой сборке инфраструктуры сборки, 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, он сейчас не помогает. :-)
— Сёрен Лёвборг

На самом деле он доступен в 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.