Установка gcc 4.8 на Debian
Я хочу начать играть с некоторыми из новых возможностей С++ 11, и кажется, что лучшая поддержка для этого - с gcc 4.8, а Squeeze - с 4.4.5.
Однако я не хочу причинять "ущерб" моей текущей настройке. Какой лучший способ получить обе версии gcc, работающие бок о бок? Я обеспокоен главным образом большим количеством зависимостей и что их все в мою текущую систему может сделать ее нестабильной.
Кто-нибудь смог это сделать и какие шаги были предприняты?
В противном случае я, скорее всего, просто создаю виртуальную машину и запустил бы "нестабильный" Debian, но это было бы менее идеальным решением.
Ответы
Ответ 1
Если вы устанавливаете GCC из исходного кода, убедитесь, что вы не устанавливаете его на /usr
, и он ничего не испортит. Если вы установите его как своего собственного пользователя, а не root
, тогда нет никакой возможности испортить систему.
См. http://gcc.gnu.org/wiki/InstallingGCC для минимальной конфигурации с минимальным идиотом.
У меня есть разные версии, созданные моим пользователем и установленные в ~/gcc/4.X
для разных X.
Единственное, что нужно знать об использовании этой настройки, - это то, что разделяемые библиотеки для новой версии не находятся в пути поиска по умолчанию для динамического компоновщика, поэтому вам нужно использовать LD_LIBRARY_PATH
или какое-то другое решение для обеспечения поиска исполняемых файлов libs от 4.8, см. часто задаваемые вопросы о libstdС++ и страницу, на которую он ссылается в manual
Я использую оболочку script call g++11
, которая просто вызывает новую версию GCC с помощью -std=gnu++11
и передает флаг компоновщику, говоря ему, чтобы установить путь к 4.8 libs в исполняемом файле:
$HOME/gcc/4.8/bin/g++ -Wl,-rpath,$HOME/gcc/4.8/lib64 -std=gnu++11 -Wall -Wextra -g "[email protected]"
Ответ 2
У меня была такая же проблема, и я не хотел полностью обновляться до тестирования.
Jessie (тестирование) теперь содержит g++ - 4.8, которая совместима с С++ 11.
Я использовал apt-pinning следующим образом:
Источник для jessie был добавлен в /etc/apt/sources.list:
deb http://ftp.uk.debian.org/debian/ jessie main non-free contrib
/etc/apt/preferences был отредактирован как таковой:
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
В какой момент я выбрал второй представленный параметр для полного разрешения зависимостей.
Ответ 3
Debian имеет пакет под именем gcc-4.8 (или для компилятора С++, g++ - 4.8). Установка этих пакетов не испортит вашу ОС, если вы не переименуете ее в g++. Пакет указан как экспериментальный.
Информация о пакете здесь.
Обновление: g++ - 4.8 теперь находится в testing, но обновленный пакет находится в unstable
Ответ 4
Быстрые:
-
Просто обновляйтесь до тестирования, он прочный и предлагает вам несколько параллельных версий gcc. Аналогично для Ubuntu, 12.10. Я параллельно gcc/g++ 4.4, 4.5, 4.6 и 4.7.
-
Попробуйте архив backports Debian, он может иметь порт gcc 4.8.
-
Использование виртуализации: я предпочитаю libvirt/kvm, который невероятно легкий в Linux, поскольку он основан на ядре. Мой сервер amd64 имеет две другие 32-разрядные установки именно по этой причине.
-
Не очень-то вопрос...
Ответ 5
Вы пробовали chroot, чтобы установить новый аромат Debian?