Установка gcc 4.8 в Debian

Я хочу начать играть с некоторыми новыми функциями C++11, и похоже, что лучшая поддержка для этого - gcc 4.8, а Squeeze поставляется с 4.4.5.

Тем не менее, я не хочу причинять какой-либо "ущерб" моей текущей настройке. Какой лучший способ заставить обе версии gcc работать параллельно? Меня больше всего беспокоит большое количество зависимостей и то, что включение их всех в мою текущую систему может сделать ее нестабильной.

Кому-нибудь удалось это сделать, и какие шаги предпринимаются?

Если это не удастся, я, вероятно, просто создаю виртуальную машину и запускаю "нестабильный" Debian, но это далеко не идеальное решение.

5 ответов

Решение

Если вы устанавливаете GCC из исходного кода, просто убедитесь, что вы не установили его в /usr и это ничего не испортит. Если вы установите его как свой собственный пользователь, а не root, то есть нулевой шанс испортить систему.

См. http://gcc.gnu.org/wiki/InstallingGCC для минимальной конфигурации, практически защищенной от идиотов.

У меня есть различные версии, созданные как мой пользователь и установленные в ~/gcc/4.X для различных X.

Единственное, что нужно знать об использовании этой настройки, это то, что общие библиотеки для новой версии не находятся в пути поиска динамического компоновщика по умолчанию, поэтому вам нужно использовать LD_LIBRARY_PATH или другое решение для обеспечения того, чтобы исполняемые файлы находили библиотеки из 4.8, смотрите FAQ по libstdC++ и страницу, на которую они ссылаются, в руководстве

Я использую вызов сценария оболочки g++11 который просто вызывает новую версию GCC с -std=gnu++11 и передает флаг компоновщику, говоря ему установить путь к библиотекам 4.8 в исполняемом файле:

$HOME/gcc/4.8/bin/g++ -Wl,-rpath,$HOME/gcc/4.8/lib64 -std=gnu++11 -Wall -Wextra -g "$@"

У меня была та же проблема, и я не хотел полностью переходить на тестирование.

Джесси (тестирование) теперь содержит g++-4.8, который совместим с C++11.

Я использовал apt-pinning следующим образом:

Источник для Джесси был добавлен в /etc/apt/sources.list:

deb http://ftp.uk.debian.org/debian/ jessie main non-free contrib

/ etc / apt / предпочтения был отредактирован так:

Package: *
Pin: release n=wheezy
Pin-Priority: 900

Package: gcc*
Pin: release n=jessie
Pin-Priority: 910

Затем,

$ sudo aptitude update
$ sudo aptitude install gcc/jessie

В этот момент я выбрал второй представленный вариант для полного разрешения зависимостей.

Debian имеет пакет с именем gcc-4.8 (или для компилятора C++, g++-4.8). Установка этих пакетов не испортит вашу ОС, если вы не переименуете ее в g ++. Пакет указан как экспериментальный.
Информация о пакете здесь.

Обновление: g++-4.8 сейчас в тестировании, но обновленный пакет находится в нестабильном

Быстрые:

  1. Просто перейдите на тестирование, оно отлично работает и предлагает вам несколько одновременных версий gcc. Аналогично для Ubuntu, 12.10 у меня есть gcc/g++ 4.4, 4.5, 4.6 и 4.7 параллельно.

  2. Попробуйте архив бэкпортов Debian, он может иметь порт gcc 4.8.

  3. Используйте виртуализацию: я предпочитаю libvirt / kvm, который невероятно легок в Linux, так как основан на ядре. По этой же причине мой сервер amd64 имеет две другие 32-битные установки.

  4. Не совсем так вопрос...

Вы пробовали chroot для установки более новой версии Debian?

  • Вы можете играть без страха, чтобы сломать вашу рабочую систему.

  • установите версию Debian, поддерживающую нужную вам версию gcc.

  • установить версию gcc вручную, не затрагивая вашу рабочую систему. http://wiki.blender.org/index.php/Dev%3ADoc/Building_Blender/Linux/Chroot

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