Вопрос по gcc, c++11, debian – Установка gcc 4.8 в Debian

27

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

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

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

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

Ваш Ответ

5   ответов
34

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

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

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

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

Я использую вызов сценария оболочки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 "[email protected]"
я нашел особенно полезным скрипт-обертку Federico Bonelli
6

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

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

Конечно, я знаю об этом, так как я был разработчиком / сопровождающим Debian с 1995 года. Это не для слабонервных, так как разрыв между стабильным и тестируемым / нестабильным может увеличиться. Намного проще использовать тестирование в качестве базы, которой я занимаюсь годами. Но YMMV и его тоже. Dirk Eddelbuettel
А как насчет других вещей, которые будут включены, библиотеки и тому подобное? Будут ли они сосуществовать хорошо? Например, будет ли gcc4.5 по-прежнему использовать правильный libc (или это имеет значение)? paxdiablo
Все должно прекрасно сосуществовать. Все пакеты имеют суффикс "-4.8" для предотвращения любых конфликтов. JKor
Он работает стабильно, хотя. Dirk Eddelbuettel
Он может настроить свою систему для поиска нестабильных пакетов, если пожелает. смотреть наэтот вопрос по ServerFault (прочитайте принятый ответ). JKor
2

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

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

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

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

Так что для программирования, я видел, как мафия модераторов перенесла много похожих вопросов на суперпользователя. Лично ялюбить вопрос здесь и думаю, что сайты SE становятся слишком мелкозернистыми. Просто говорю, что я более или менее ожидаю, что это будет закрыто / перемещено. Dirk Eddelbuettel
Из FAQ: «программные средства, обычно используемые программистами». Если gcc не соответствует этому описанию, я съем свою шляпу :-) paxdiablo
16

и я не хотел полностью переходить на тестирование.

Джесси (тестирование) теперь содержит 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

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

Так должно бытьn=jessie, кодовое название дистрибутиваn= согласно сman apt_preferences, Кроме того, это не работает для меня сa. Pietro Saccardi
Эти инструкции нарушают работу Debian 7.8.0 (wheezy), удаляя существующую установку gcc 4.7 и не устанавливая более новую версию gcc. Не возможно (или не работает) использоватьapt-get попытаться переустановить оригинальный gcc 4.7, чтобы вернуться в рабочее состояние разработчика, либо. Alex Reynolds
1

корневой установить более новую версию Debian?

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

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

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

Похожие вопросы