Как мне использовать последнюю версию 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.