воскресенье, 29 сентября 2013 г.

Установка более новых версий компиляторов gcc и g++

Маленькая шпаргалка на тему того, как в Linux установить наиболее "свежие" на сегодняшний день release-версии компиляторов gcc и g++. В моём случае - установить версии 4.8.1, взамен предустановленных по умолчанию версий 4.6.3 в операционной системе Ubuntu 12.04 LTS.

Согласно этой информации:

GCC now uses C++ as its implementation language. This means that to build GCC from sources, you will need a C++ compiler that understands C++ 2003.

реализация GCC теперь полностью переписана на C++. Причины принятия такого решения перечислены здесь в разделах Background и Rationale. Состояние поддержки стандарта C++11 в GCC 4.8 обозначено здесь. О поддержке стандарта C11 можно почитать тут. Поскольку меня весьма интересует C++11 (читаю это), то захотелось поставить наиболее свежую версию компилятора.

Обозначенный далее перечень действий подходит для использования в следующих операционных системах Linux:
  • Ubuntu 13.10 Saucy Salamander
  • Ubuntu 13.04 Raring Ringtail
  • Ubuntu 12.10 Quantal Quetzal
  • Ubuntu 12.04 Precise Pangolin
  • Ubuntu 10.04 Lucid Lynx
  • Linux Mint 16 Petra
  • Linux Mint 15 Olivia
  • Linux Mint 14 Nadia
  • Linux Mint 13 Maya
  • Elementary OS 0.2 Luna
Поскольку версии 4.8.1 имеются в PPA, то их установка происходит достаточно просто.

1. Установка gcc 4.8.1 (компилятор C)


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


 После успешной установки gcc 4.8.1, необходимо удалить gcc и g++ из списка приложений, используемых по умолчанию:

$ sudo update-alternatives --remove-all gcc

Назначаем gcc 4.8.1 компилятором, используемым по умолчанию:

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20
$ sudo update-alternatives --config gcc


Источник обозначенной выше информации здесь. Теперь нужно обновить и компилятор g++ (см. след. раздел).

2. Установка g++ 4.8.1 (компилятор C++)


После обновления gcc приступаем к обновлению g++:

sudo update-alternatives --remove-all g++
sudo apt-get install g++-4.8


Конфигурируем g++:

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20
sudo update-alternatives --config g++


Обновляем систему:

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get dist-upgrade


Всё. После обновления системы проверяем версии компиляторов:

$ gcc -v
...
gcc version 4.8.1

$ g++ -v
gcc version 4.8.1

Т. о. всё прошло успешно.

Примечание: если не выполнять действий, описанных в разделе 2, то для g++ результат был бы иным:

gcc version 4.6.3

т. е. обновился бы только компилятор gcc, а g++ остался бы старым.

Источник обновления g++ здесь.

3 комментария:

Анонимный комментирует...

Спасибо! Помогло на ElementaryOS Luna (база - 12.04).

Михаил комментирует...

обновился я по твоей инструкции, и toolchain сломался. ибо компилятор потянул за собой binutils-2.23.52, который выдает ошибку при компиляции большинства программ. Это конечно решается добавлением LDFLAGS="-lm", но все равно неприятно, нужно об этом упоминать.

Анонимный комментирует...

Спасиб, сломался G++ компил, обновил -- работает!