Я перепробовал много решений для установки обновления для моего компилятора gcc на сервере Debian. Ни одно из них не сработало. Мне нужно обновление компилятора для использования новых возможностей c++11, так как это обеспечивает стабильный ABI libcxx11 и стабильную поддержку C++11 (см.здесь). В частности, получение версии `GLIBCXX_3.4.21', которая не включена в мой текущий компилятор gcc версии 4.9.2 (Debian 4.9.2-10).
Некоторые указания по решению будут полезны. Спасибо заранее.
Некоторые ссылки на форумы, связанные с моей проблемой, которые я уже опробовал:
1 2 3(не совсем похожее решение для Ubuntu, но я пока не смог найти gcc-5 на ftp-сервере Debian)
решение1
Мне нужно было установить GCC 5+ на Debian Jessie, и, поскольку он доступен для тестирования Debian (по крайней мере, на 16 июня), вы можете использовать apt-pinning для установки пакетов, доступных там (см.https://wiki.debian.org/AptPreferences).
Чтобы установить GCC 5+ из тестового выпуска на Debian Jessie с помощью apt-pinning:
Добавьте репозиторий Debian Testing в исходники apt, создав в каталоге файл,
/etc/apt/sources.list.d
содержащий строкуdeb http://ftp.us.debian.org/debian testing main contrib non-free
Дайте указание Debian использовать тестовые исходные коды для определенных пакетов, создав файл,
/etc/apt/preferences.d
содержащий следующее:Package: * Pin: release a=testing Pin-Priority: 100
Обновление базы данных apt:
sudo apt-get update
Установите gcc из тестирования:
sudo apt-get install -t testing gcc
Обратите внимание, что при использовании
-t testing
apt-get вы указываете установить gcc из тестовых источников, как настроено ранее.
Я настоятельно рекомендую очистить всю компиляцию и перекомпилировать все зависимости перед повторной компиляцией исходных кодов.
Веселиться!
решение2
По состоянию на 19 февраля 2017 г. gcc-5 былудаленныйиз тестирования:
https://tracker.debian.org/pkg/gcc-5
Вы можете это сделать apt-get install gcc-5
, если сначала выполните эту строку как root:
echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" > /etc/apt/sources.list.d/unstable.list
Затем вы, вероятно, захотите изменить приоритет этого источника в /etc/apt/preferences.d
соответствии с ответом llekn.
решение3
Чтобы объединить два предыдущих ответа в один работающий:
echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" >> /etc/apt/sources.list.d/unstable.list
apt-get update
apt-get install -t unstable gcc-5
НО!!! Используйте это на свой страх и риск, так как вы устанавливаете пакеты из нестабильной версии. Вы также можете захотеть удалить их /etc/apt/sources.list.d/unstable.list
после установки пакетов.
Если возможно, устанавливайте под Docker, чтобы не испортить ОС. Ваш опыт может отличаться.
решение4
Мне удалось установить gcc-5
из репозиториев Ubuntu на Debian 10.13 "buster". Это действительно плохая практика, но у меня не было другого выбора.
Вот команды (дружественные CI)
apt-get remove -y gcc
echo "deb http://us.archive.ubuntu.com/ubuntu/ xenial main" >> /etc/apt/sources.list.d/buster.list
echo "deb http://us.archive.ubuntu.com/ubuntu/ xenial universe" >> /etc/apt/sources.list.d/buster.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5 3B4FE6ACC0B21F32
apt-get update
apt-get install -y gcc-5 g++-5
ln -s /usr/bin/gcc-5 /usr/bin/gcc
ln -s /usr/bin/g++-5 /usr/bin/g++