Получение + установка gcc / g ++ 4.9 на Ubuntu?

77

Как установить последнюю версию gcc и g ++?

Я использую различные функции C ++ 11 и C ++ 1y; поэтому я нуждаюсь в этом.

    
задан A T 02.03.2014 в 04:05
источник

7 ответов

107

Вы можете установить близкую к восходящей версии GCC из Ubuntu Toolchain PPA: Ссылка

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install g++-4.9

Протестировано на Ubuntu 14.04.

    
ответ дан Vladimir Rutsky 28.04.2014 в 10:14
41

Введение

научить человека рыбу и т. д. и т. д.

Как создать исходный пакет и обслуживать его из локального хранилища удобным для пользователя способом. Это будет работать на любом дистрибутиве при условии, что зависимости могут быть удовлетворены / Этот метод не требует установки сборки для каждого пакета и загрязнения вашей машины посторонними пакетами, это позволит вам идти в ногу с пакетами, поскольку они обновляются в debian experimental , Требуется всего несколько минут, чтобы сделать это один раз, а затем можно повторно использовать, чтобы перестроить любой пакет, который вам нужен, не полагаясь на других людей, чтобы упаковать ppa для вас или загрузить кучу разных .debs

Преимущество построения и вытаскивания raw debug из debian заключается в том, что это создаст пакеты для пакетов в вашем дистрибутиве, которые могут отличаться версией / версией от того, что используется в качестве зависимостей сборки для распределения debian. Это больше или меньше процесс для пакетов backporting. Вы также можете использовать любой дистрибутив ubuntu для создания пакетов, предназначенных для любого другого дистрибутива (цель в этом случае означает сборку против стандартных пакетов репозитория) без каких-либо проблем.

Basic-How-To-Build-A-Деб

(не для загрузки ppa - у этого есть beurocratic требования с панели запуска

Вероятно требуется: packaging-dev (тянет build-essential pubilder ubuntu-dev-tools среди других)

  1. Настроить pbuilder (это позволяет вам создавать пакет в chroot, не загрязняя вашу систему пакетами сборки)

    • sudo pbuilder create ,
    • , если вы хотите создать для определенного дистрибутива (pbuilder использует выпуск системы сборки в chroot), вы можете использовать pbuilder-dist [precise/oneric/trusy/etc...] create
  2. Получить источник debian

    • pull-debian-source gcc-4.9 [4.9.0-6] конкретная версия debian является необязательной, но может быть полезна, если вы хотите вытащить экспериментальные / нестабильные / тестовые / стабильные версии.
    • вы также можете извлечь из определенных дистрибутивов ubuntu , добавив их в sources.list как deb-src и используя sudo apt-get src
  3. Сборка пакета

    • sudo pbuilder build gcc-4.9_4.9.0-6.dsc
    • В загруженных файлах есть файл .dsc , для самого последнего gcc это gcc-4.9_4.9.0-6.dsc , который является файлом дескриптора пакета. .orig.tar.[gz/xz] является исходным tarball.
  4. Создать локальный Apt-репозиторий

    • mkdir /convenient/place/for/repo
    • cp /var/cache/pbuilder/result/* /path/to/repo
    • (при условии, что вы находитесь в репо) apt-ftp archive packages . > Packages
    • (один из многих способов сделать это) sudo echo "deb [trusted=yes] file:/local/repo/Packages ./" > /etc/apt/sources.list.d/gcc-repo.list
    • Обратите внимание, что вы также можете сделать этот шаг с .debs, загруженным из любого места (пропустите шаг 1-3)
  5. Установить

    • apt-get update; apt-get install gcc-4.9 g++-4.9

Дополнительные трюки

Легкие зависимости от резервного копирования

Использование самокомпилированных пакетов для удовлетворения зависимостей при создании пакетов. (У меня он настроен с папками ~/pbuilder ~/pbuilder/precise_local (локальный репозиторий пакета для точного) и ~/pbuilder/precise_hooks (для скриптов hook))

Добавьте в свой ~/.pbuilderrc

следующее:
OTHERMIRROR="deb [trusted=yes] file:///home/user/pbuilder/precise_local ./"

BINDMOUNTS="/home/user/pbuilder/precise_local" 

HOOKDIR="/home/user/pbuilder/precise_hooks"

EXTRAPACKAGES="apt-utils"

в precise_hooks создать файл D05local (в типичном стиле unix / linux, префикс D сообщает, когда скрипт подключен 05 - это самонастраиваемое имя-порядок, а local - это просто имя, если у вас есть только один крючок, это не важно, что его вызвало до тех пор, пока D является префиксом

сценарий является однострочным

(cd /home/user/pbuilder/precise_local ; apt-ftparchive packages . > Packages)

Теперь любые пакеты, помещенные в precise_local , будут соответствовать зависимости от сборки. Это чрезвычайно полезно для создания дерева зависимостей локально при обратном переносе пакетов, у которых есть зависимости, которые также нуждаются в backporting

Решение VM

Чтобы сделать это еще более чистым способом, используйте изображение VM или контейнер LXC, чтобы помешать этому беспорядку.

Применение пользовательских патчей

вы можете применять пользовательские исправления в большинстве debian-пакетов, используя quilt , патчи для завивки могут использовать отличия от большинства VCS (см. с использованием одеяла )

Есть дополнительный шаг, вы должны перестроить .dsc и .debian.tar.gz . Самый чистый способ, который я знаю, - bzr-builddeb , имеет самый высокий коэффициент успеха IMHO (по сравнению с git-build-пакетом и другими вспомогательными скриптами) и намного чище, чем вызов debuild напрямую ( bzr = VCS канонического базара)

  1. sudo apt-get install bzr-builddeb
  2. (при условии, что .orig.tar.gz извлекается и .debian.tar.gz извлекается и помещается в него
    • bzr init
    • bzr add
    • bzr commit
  3. (необязательно)
    • изменить debian/changelog
    • добавить патч к debian/patches/ и изменить debian/patches/series (у одеяла также есть утилита для добавления патчей или для изменения на лету, см. документацию).
    • bzr add debian/
    • bzr commit
  4. bzr builddeb -- -S -us -uc Это перестраивает исходный файл и оставляет его без знака (подписание gpg требуется для загрузки PPA / distro, но не для частных локальных репозиториев).
  5. cd ../build-area/ Продолжить с шага 3 выше.

Шаги 1-4 здесь в значительной степени требуют загрузки в PPA (они не берут двоичные файлы), но вам требуются некоторые шаги для удовлетворения бюрократии пусковой площадки (это дает объяснение, это имеет некоторые ссылки)     

ответ дан crasic 12.06.2014 в 18:03
26

установить

sudo su -
apt-get install build-essential
add-apt-repository ppa:ubuntu-toolchain-r/test
apt-get update
apt-get install gcc-4.9 g++-4.9 cpp-4.9

после этого, если вы проверите версию gcc, вы найдете старую версию

gcc --version

, поэтому мы можем исправить его с помощью простого символического

cd /usr/bin
rm gcc g++ cpp
ln -s gcc-4.9 gcc
ln -s g++-4.9 g++
ln -s cpp-4.9 cpp

или

вы можете обновить, используя update-alternatives

// На самом деле я попробовал символический & amp; Я знаю, что это сработает, но вы можете использовать символику, чтобы получить ее без проблем // пожалуйста, поправьте меня, если я ошибаюсь

update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40 --slave /usr/bin/gcc gcc /usr/bin/gcc-4.9
update-alternatives --config gcc
update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-4.9 40 --slave /usr/bin/cpp cpp /usr/bin/cpp-4.9
update-alternatives --config cpp
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9
update-alternatives --config g++

или

, вы можете просто скомпилировать
/usr/bin/gcc4.9 filename.c

gcc-4.9 точно так же, как gcc-4.8 "ubuntu 14.04 gcc", это не большая честь

    
ответ дан hwez 05.08.2014 в 10:27
8

Debian предлагает пакет: Ссылка - предотвращать возникновение проблем с совместимостью с Ubuntu / Debian; не добавляйте его в свой источник.list.

Вместо этого просто загрузите все это:

binutils_2.25-5_amd64.deb
cpp_4.9.2-2_amd64.deb
g++_4.9.2-2_amd64.deb
gcc_4.9.2-2_amd64.deb
gcc-4.9-base_4.9.2-10_amd64.deb
libasan1_4.9.2-10_amd64.deb
libatomic1_4.9.2-10_amd64.deb
libcilkrts5_4.9.2-10_amd64.deb
libgcc1_4.9.2-10_amd64.deb
libgcc-4.9-dev_4.9.2-10_amd64.deb
libgomp1_4.9.2-10_amd64.deb
libitm1_4.9.2-10_amd64.deb
liblsan0_4.9.2-10_amd64.deb 
libmpfr4_3.1.2-2_amd64.deb
libquadmath0_4.9.2-10_amd64.deb
libstdc++-4.9-dev_4.9.2-10_amd64.deb
libstdc++6
libtsan0_4.9.2-10_amd64.deb
libubsan0_4.9.2-10_amd64.deb

На серверах Debian, например:

Ссылка

Затем установите их, например: $ for package in *.deb; do sudo dpkg --install "$package"; done

[Легче просто запустить этот цикл bash несколько раз, пока не будут охвачены все зависимости, кроме как запомнить порядок, в который вы их загрузили!]

    
ответ дан A T 02.03.2014 в 04:05
2

В настоящее время (20141102) добавление PPA и вызов указанной команды apt-get install gcc-4.9 g++-4.9 cpp-4.9 распечатает множество предлагаемых пакетов. Установите их все, кроме libvtv0-dbg (который имеет конфликт зависимости):

apt-get install gcc-4.9 g++-4.9 cpp-4.9 gcc-4.9-locales g++-4.9-multilib libstdc++6-4.9-dbg gcc-4.9-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan1-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libquadmath0-dbg lib32stdc++6-4.9-dbg libx32stdc++6-4.9-dbg

(пропустите пакеты -dbg, если они вас не интересуют), а затем выполните apt-get dist-upgrade --auto-remove . Этот последний шаг в основном заменит ваш gcc-4.8 на gcc-4.9 (но не удалит более старую версию), а также вытащить современные компиляторы fortran в одно и то же время.

    
ответ дан RJVB 02.11.2014 в 20:09
2

Мне пришлось вынудить версию для пакета gcc-4.9-base пройти мимо сообщенного вами сообщения об ошибке. Затем установка работала

sudo apt-get install gcc-4.9-base=4.9.2-0ubuntu1~14.04

Теперь вы можете сделать обычный

sudo apt-get install gcc-4.9
    
ответ дан mark.kedzierski 13.04.2015 в 18:51
2

Установить GCC GNU 4.9

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

sudo apt-get update

sudo apt-get install gcc-4.9

Удалить предыдущую версию gcc из списка приложений по умолчанию (если она уже существует)

sudo update-alternatives --remove-all gcc

Сделать GCC 4.9 компилятором по умолчанию в системе

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20

sudo update-alternatives --config gcc

Последнее обновление GCC 4.9.1 является выпуском исправления ошибок из ветви GCC 4.9, содержащей важные исправления для регрессий и серьезных ошибок в GCC 4.9.0 с более чем 88 ошибками, исправленными со времени предыдущей версии. В дополнение к этому выпуск GCC 4.9.1 поддерживает OpenMP 4.0 также в Fortran, а не только на C и C ++

Примечание: проверено на ubuntu 14.04 LTS

    
ответ дан Swap L 25.08.2015 в 07:56