80 votes

Obtenir + installer gcc/g++ 4.9 sur Ubuntu ?

Comment installer la dernière version de gcc et g++ ?

J'utilise une variété de fonctionnalités C++11 et C++1y ; c'est pourquoi j'en ai besoin.

110voto

Vladimir Rutsky Points 1279

Vous pouvez installer une version proche de la version amont de GCC à partir du PPA Ubuntu Toolchain : https://wiki.ubuntu.com/ToolChain#PPA_packages

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

Testé sur Ubuntu 14.04.

43voto

Dominic Eidson Points 719

Intro

apprendre à un homme à pêcher etc. etc.

Comment construire le paquet source et le servir à partir d'un dépôt local d'une manière conviviale pour apt. Cela fonctionnera sur n'importe quelle distribution à condition que les dépendances puissent être satisfaites. Cette méthode ne vous oblige pas à installer des build-deps pour chaque paquet et à polluer votre machine avec des paquets étrangers, cela vous permettra de suivre les paquets au fur et à mesure qu'ils sont mis à jour dans debian experimental. Cela ne prend que quelques minutes pour le faire une fois, et peut ensuite être réutilisé pour reconstruire n'importe quel paquet dont vous avez besoin sans avoir à compter sur d'autres personnes pour empaqueter le ppa pour vous ou télécharger un tas de .debs différents.

L'avantage de construire plutôt que de tirer des .debs bruts de Debian est que cela construira les paquets contre les paquets de votre distribution qui peuvent différer en version/révision de ce qui est utilisé comme dépendances de construction pour la distribution Debian. Il s'agit plus ou moins du processus de rétroportage de paquets. Vous pouvez également utiliser n'importe quelle distribution ubuntu pour construire des paquets destinés à n'importe quelle autre distribution (cible dans ce cas signifie construire contre les paquets du dépôt standard) sans problème.

Comment construire un disque de base

(pas pour le téléchargement de ppa - ceci a des exigences beurocratiques de launchpad)

Probablement nécessaire : packaging-dev (tirettes build-essential pubilder ubuntu-dev-tools entre autres)

  1. Configurer pbuilder (cela vous permet de construire un paquet dans un chroot sans polluer votre système avec des paquets de dépendance de construction).

    • sudo pbuilder create ,
    • si vous voulez construire pour une distribution spécifique, (pbuilder utilise la version du système de construction dans un chroot) vous pouvez utiliser pbuilder-dist [precise/oneric/trusy/etc...] create
  2. Obtenir les sources debian

    • pull-debian-source gcc-4.9 [4.9.0-6] La révision spécifique de Debian est facultative, mais peut être utile si vous voulez récupérer des révisions expérimentales/unstables/testing/stables.
    • vous pouvez également tirer des distros ubuntu spécifiques en les ajoutant à sources.list en tant que deb-src et en utilisant sudo apt-get src
  3. Paquet de construction

    • sudo pbuilder build gcc-4.9_4.9.0-6.dsc
    • Dans les fichiers téléchargés, il y a un .dsc pour la version la plus récente de gcc, il s'agit de gcc-4.9_4.9.0-6.dsc qui est un fichier descripteur de paquet. .orig.tar.[gz/xz] est l'archive de la source.
  4. Créer un dépôt local d'Apt

    • mkdir /convenient/place/for/repo
    • cp /var/cache/pbuilder/result/* /path/to/repo
    • (en supposant que vous êtes dans le répertoire repo) apt-ftp archive packages . > Packages
    • (une des nombreuses façons de procéder) sudo echo "deb [trusted=yes] file:/local/repo/Packages ./" > /etc/apt/sources.list.d/gcc-repo.list
    • Notez que vous pouvez également effectuer cette étape avec des .debs téléchargés depuis n'importe où (sautez les étapes 1-3).
  5. Installer

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

Trucs et astuces supplémentaires

Backportage facile Dépendances

Utilisation de paquets auto-compilés pour satisfaire les dépendances lors de la construction de paquets. (Je l'ai configuré avec des dossiers ~/pbuilder ~/pbuilder/precise_local (repo de paquet local pour plus de précision) et ~/pbuilder/precise_hooks (pour les crochets scripts) )

Ajoutez les éléments suivants à votre ~/.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"

sur precise_hooks créer un fichier D05local (dans la tradition unix/linux, le préfixe D indique quand script est accroché 05 est un ordre de nom auto-imposé et local est juste le nom, si vous n'avez qu'un seul crochet, son nom n'est pas important tant que D est le préfixe

le script est un one-liner

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

Maintenant, tous les paquets placés dans precise_local satisfera les build-depends. C'est extrêmement utile pour construire localement un arbre de dépendances lors du rétro-portage de paquets qui ont des dépendances qui nécessitent également un rétro-portage.

La solution VM

Pour faire cela de manière encore plus propre, utilisez une image VM ou un conteneur LXC pour emprisonner ce désordre.

Appliquer des correctifs personnalisés

vous pouvez appliquer des correctifs personnalisés dans la plupart des paquets debian en utilisant quilt Les patchs d'édredon peuvent utiliser les diffs de la plupart des VCS (voir : utilisation de l'édredon )

Il y a une étape supplémentaire, vous devez reconstruire les .dsc y .debian.tar.gz . Le moyen le plus propre que je connaisse est bzr-builddeb il a le plus haut taux de réussite IMHO (comparé à git-build-package et d'autres scripts d'aide) et est beaucoup plus propre que d'appeler debuild directement ( bzr = VCS du bazar canonique)

  1. sudo apt-get install bzr-builddeb
  2. (en supposant que .orig.tar.gz est extrait et .debian.tar.gz est extrait et placé dans celui-ci
    • bzr init
    • bzr add
    • bzr commit
  3. (FACULTATIF)
    • modifier debian/changelog
    • ajouter un patch à debian/patches/ et modifier debian/patches/series (quilt dispose également d'un utilitaire pour ajouter des correctifs ou pour que vous puissiez le modifier à la volée, voir la documentation)
    • bzr add debian/
    • bzr commit
  4. bzr builddeb -- -S -us -uc Ceci reconstruit le fichier source et le laisse non signé (signature gpg requise pour le téléchargement de PPA/distro, mais pas pour les dépôts locaux privés).
  5. cd ../build-area/ Continuez à partir de l'étape 3 ci-dessus.

Les étapes 1-4 ici sont à peu près ce dont vous avez besoin pour télécharger vers un PPA (ils ne prennent pas les fichiers binaires), mais vous avez besoin de quelques étapes pour satisfaire la bureaucratie du launchpad (ceci réponse fournit une explication, este l'un d'entre eux contient quelques liens)

27voto

André Points 79

Installer

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

après cela si vous vérifiez la version de gcc vous trouverez l'ancienne version

gcc --version

afin que nous puissions le réparer avec un simple symbole

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

o

que vous pouvez mettre à jour en utilisant update-alternatives

// En fait, j'ai essayé le symbolique et je sais que cela fonctionnera mais vous pouvez utiliser le symbolique pour l'obtenir sans problèmes. // Veuillez me corriger si j'ai tort.

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++

o

vous pouvez simplement compiler avec

/usr/bin/gcc4.9 filename.c

gcc-4.9 est juste comme la gcc-4.8 "ubuntu 14.04 gcc" ce n'est pas une grande déférence

proof

8voto

Sahil Points 51

Debian propose un paquet : https://packages.debian.org/jessie/gcc-4.9 - Pour éviter de causer des problèmes de compatibilité Ubuntu/Debian ; ne l'ajoutez pas à votre sources.list.

Au lieu de cela, il suffit de les télécharger tous :

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

Depuis les serveurs de Debian, par exemple :

http://ftp.us.debian.org/debian/pool/main/b/binutils/binutils_2.25-5_amd64.deb

Puis les installer, par exemple : $ for package in *.deb; do sudo dpkg --install "$package"; done

(Il est plus facile d'exécuter cette boucle bash plusieurs fois jusqu'à ce que toutes les dépendances soient couvertes que de se souvenir de l'ordre dans lequel vous les avez téléchargées).

2voto

RJVB Points 201

Actuellement (20141102) en ajoutant le PPA et en invoquant la commande ci-dessus apt-get install gcc-4.9 g++-4.9 cpp-4.9 imprimera une série de paquets suggérés. Installez-les tous sauf libvtv0-dbg (qui a un conflit de dépendance) :

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

(sautez les paquets -dbg s'ils ne vous intéressent pas), puis faites un apt-get dist-upgrade --auto-remove . Cette dernière étape remplacera essentiellement votre gcc-4.8 par gcc-4.9 (mais ne désinstallera pas l'ancienne version), et mettra à jour les compilateurs fortran en même temps.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X