Как установить gcc-7 или clang 4.0?

Я хочу попробовать функции C++17 и установить стандартный совместимый компилятор (предпочтительно GCC). Я совершенно новичок в Linux и Ubuntu, и я просто немного не понимаю.

Я пытался следить за https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test но безуспешно. Сначала я побежал:

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

Как я понял эта команда устанавливает несколько ключей. Далее я попробовал:

sudo add-apt-repository ppa:ubuntu-toolchain-r/gcc-7

Что вернулся:

Error: 'ppa:ubuntu-toolchain-r/gcc-7' invalid

Далее я попытался установить ветку разработки clang:

apt-get install clang-4.0 lldb-4.0

И это дает мне

E: Unable to locate package clang-4.0
E: Couldn't find any package by glob 'clang-4.0'
E: Couldn't find any package by regex 'clang-4.0'
E: Unable to locate package lldb-4.0
E: Couldn't find any package by glob 'lldb-4.0'
E: Couldn't find any package by regex 'lldb-4.0'

Что все это значит? В чем дело?

3 ответа

Решение

Вы уже можете установить gcc-7 и g++-7 из этого пакета.

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

Ubuntu 16.04 и ниже

Существует официальный тестовый PPA Ubuntu GCC, который следует отдавать предпочтение:

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

GCC 7 был выпущен в мае 2017 года, поэтому слишком поздно для 17.04 основного выпуска.

PPA в настоящее время не имеет GCC для более новых версий, например, 16.10, только LTS 12.04, 14.04 и 16.04, как можно увидеть по адресу: https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test | снимок Я думаю, что это было 17.04 ранее, но это было удалено? Смотрите также: https://unix.stackexchange.com/questions/371737/install-gcc-7-on-ubuntu

Проверено на Ubuntu 16.04, октябрь 2018.

Ubuntu 17.10 и выше

Имеет GCC 7.2 и clang 4 по умолчанию! https://packages.ubuntu.com/artful/gcc | https://packages.ubuntu.com/artful/clang

$ gcc --version
gcc (Ubuntu 7.2.0-8ubuntu3) 7.2.0
$ clang --version  
clang version 4.0.1-6 (tags/RELEASE_401/final)

GCC 8 на 16.04

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

дает 8.1.0 по состоянию на 2018-11.

По умолчанию в Ubuntu 18.04:

Crosstool-NG

Если вы действительно серьезно относитесь к этому, скомпилируйте и используйте свой собственный GCC с Crosstool-NG, как описано по адресу: https://stackoverflow.com/questions/847179/multiple-glibc-libraries-on-a-single-host/52454603

Это позволит вам использовать самые разные версии GCC в самых разных версиях Ubuntu, не загружая большие двоичные объекты с PPA, которым вы не обязательно доверяете.

ОП просит "как установить...". Как вариант, как скомпилировать Clang 4.0.

Вы можете компилировать из исходного кода, используя скрипт из репозитория Microsoft ChakraCore GitHub.

wget https://raw.githubusercontent.com/Microsoft/ChakraCore/master/tools/compile_clang.sh

Обновить LLVM_VERSION="3.9.1" в строке 7 до LLVM_VERSION="4.0.0"

sudo ./compile_clang.sh

Он загрузит и скомпилирует Clang 4.0 (и весь набор инструментов компилятора) с поддержкой LLVM Gold.

Вот мой шаг по установке gcc-7/g++-7 в Ubuntu 16.04 LTS И сделать его по умолчанию.

Сначала установите gcc-7/g++-7 с помощью официального ppa.

sudo apt update -qq
sudo apt install -yq software-properties-common
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt update -qq
sudo apt install -yq g++-7

с участием:

  • -y: автоматическое подтверждение
  • -q: тихий режим (несколько повышают тихий уровень)

Затем сделайте его альтернативой по умолчанию

sudo update-alternatives \
 --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 \
 --slave /usr/bin/g++ g++ /usr/bin/g++-7 \
 --slave /usr/bin/gcov gcov /usr/bin/gcov-7 \
 --slave /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-7 \
 --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-7 \
 --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-7 \
 --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-7

сейчас работает gcc --version должен вернуть gcc 7.4.0 IIRC

Другие вопросы по тегам