Установка 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 сейчас в тестировании, но обновленный пакет находится в нестабильном
Быстрые:
Просто перейдите на тестирование, оно отлично работает и предлагает вам несколько одновременных версий gcc. Аналогично для Ubuntu, 12.10 у меня есть gcc/g++ 4.4, 4.5, 4.6 и 4.7 параллельно.
Попробуйте архив бэкпортов Debian, он может иметь порт gcc 4.8.
Используйте виртуализацию: я предпочитаю libvirt / kvm, который невероятно легок в Linux, так как основан на ядре. По этой же причине мой сервер amd64 имеет две другие 32-битные установки.
Не совсем так вопрос...
Вы пробовали chroot для установки более новой версии Debian?
Вы можете играть без страха, чтобы сломать вашу рабочую систему.
установите версию Debian, поддерживающую нужную вам версию gcc.
установить версию gcc вручную, не затрагивая вашу рабочую систему. http://wiki.blender.org/index.php/Dev%3ADoc/Building_Blender/Linux/Chroot