web-dev-qa-db-fra.com

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

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

J'utilise diverses fonctionnalités C++ 11 et C++ 1y; c'est pourquoi j'ai besoin de ça.

80
A T

Vous pouvez installer une version proche de GCC en amont à partir de Ubuntu Toolchain PPA: 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.

110
Vladimir Rutsky

Intro

apprend à un homme à pêcher, etc., etc.

Comment construire le paquet source et le servir depuis un référentiel local d’une manière adaptée à apt. Cela fonctionnera sur toutes les distributions à 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 superflus, cela vous permettra de suivre l'évolution des paquets à mesure qu'ils sont mis à jour dans debian experimental . Cette opération ne prend que quelques minutes une fois, puis peut être réutilisée pour reconstruire n’importe quel paquet dont vous avez besoin sans compter sur d’autres personnes pour emballer ppa pour vous ou télécharger un tas de fichiers .debs différents.

L'avantage de compiler ou d'extraire des fichiers .debs bruts à partir de Debian est que cela construira des paquetages contre les paquetages de votre distribution dont la version/révision peut différer de ce qui est utilisé comme dépendances de construction pour la distribution debian. C'est plus ou moins le processus de rétroportage des packages. Vous pouvez également utiliser n’importe quelle distribution ubuntu pour construire des packages ciblés sur n’importe quelle autre distribution (la cible dans ce cas-ci signifie une construction par rapport aux packages du référentiel standard) sans aucun problème.

Base-Comment-Construire-a-deb

(pas pour le téléchargement de ppa - cela a des exigences bureaucratiques du tableau de bord

Probablement nécessaire: packaging-dev (extrait build-essential pubilder ubuntu-dev-tools parmi d'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 le code source Debian

    • La révision debian spécifique à pull-debian-source gcc-4.9 [4.9.0-6] est facultative, mais peut s'avérer utile si vous souhaitez extraire des révisions expérimentales/unstable/testing/stables.
    • vous pouvez aussi extraire des distributions spécifiques d'ubunt 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 fichier .dsc, pour le plus récent 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 source.
  4. Créer un référentiel Apt local

    • mkdir /convenient/place/for/repo
    • cp /var/cache/pbuilder/result/* /path/to/repo
    • (en supposant que vous êtes en repo dir) apt-ftp archive packages . > Packages
    • (une des nombreuses façons de le faire) 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 de n'importe où (ignorez les étapes 1 à 3)
  5. Installer

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

Trucs Extra

Dépendances faciles dans le backport

Utilisation de packages auto-compilés pour satisfaire les dépendances lors de la construction de packages. (Je l'ai configuré avec les dossiers ~/pbuilder~/pbuilder/precise_local (dépôt du paquet local pour préciser) et ~/pbuilder/precise_hooks (pour les scripts de raccordement))

Ajoutez ce qui suit à 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"

dans precise_hooks créer un fichier D05local (à la manière unix/linux typique, le préfixe D indique quand le script est accroché 05 est un ordre de nom auto-imposé et local est juste le nom, si vous n’avez qu’un crochet, il n’a pas d'importance de savoir comment il s'appelle tant que D est le préfixe

le script est un one-line

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

Maintenant, tous les paquets placés dans precise_local satisferont les dépendances de compilation. Ceci est extrêmement utile pour construire une arborescence de dépendances localement lorsque les paquets portant des dépendances ont également une dépendance.

La solution VM

Pour le faire de manière encore plus propre, utilisez une image VM ou un conteneur LXC pour emprisonner ce gâchis.

Application de correctifs personnalisés

vous pouvez appliquer des correctifs personnalisés dans la plupart des paquets Debian à l'aide de quilt; les correctifs de quilt peuvent utiliser des différences provenant de la plupart des VCS (voir: avec quilt )

Il y a une étape supplémentaire, vous devez reconstruire les .dsc et .debian.tar.gz. La manière la plus propre que je connaisse est bzr-builddeb, elle a le taux de réussite le plus élevé à mon humble avis (comparé à git-build-package et à d'autres scripts d'aide) et est beaucoup plus propre que d'appeler debuild directement (bzr = VCS de canonical)

  1. Sudo apt-get install bzr-builddeb
  2. (en supposant que .orig.tar.gz est extrait et que .debian.tar.gz est extrait et y place
    • bzr init
    • bzr add
    • bzr commit
  3. (OPTIONNEL)
    • modifier debian/changelog
    • ajoutez un correctif à debian/patches/ et modifiez debian/patches/series (quilt a également un utilitaire pour ajouter des correctifs ou pour 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é (la signature gpg est requise pour le téléchargement PPA/distribution, mais pas pour les pensions privées locales)
  5. cd ../build-area/ Continuez à partir de l'étape 3 ci-dessus.

Les étapes 1 à 4 correspondent à peu près à ce que vous devez télécharger dans un PPA (elles ne prennent pas de fichiers binaires), mais vous avez besoin de quelques étapes pour satisfaire la bureaucratie du tableau de bord (this answer fournit une explication, - this on a des liens)

42
crasic

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

Au lieu de cela, téléchargez simplement tous ces:

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

Ensuite, installez-les, par exemple: $ for package in *.deb; do Sudo dpkg --install "$package"; done

[Plus facile de lancer cette boucle bash plusieurs fois jusqu'à ce que toutes les dépendances soient couvertes que de rappeler l'ordre dans lequel vous les avez téléchargées!]

8
A T

Actuellement (20141102), l'ajout du PPA et l'appel de la commande ci-dessus apt-get install gcc-4.9 g++-4.9 cpp-4.9 afficheront un ensemble de packages suggérés. Installez-les tous sauf pour 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

(ignorez les paquets -dbg s’ils ne vous intéressent pas), puis faites un apt-get dist-upgrade --auto-remove. Cette dernière étape remplacera fondamentalement votre gcc-4.8 par gcc-4.9 (sans toutefois désinstaller l'ancienne version), et extraira simultanément les compilateurs fortran mis à jour.

2
RJVB

Je devais forcer la version du paquetage gcc-4.9-base pour dépasser le message d'erreur que vous avez posté. Puis l'installation a fonctionné

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

Maintenant, vous pouvez faire le régulier

Sudo apt-get install gcc-4.9
2
mark.kedzierski

Installez GCC GNU 4.9

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

Sudo apt-get update

Sudo apt-get install gcc-4.9

Supprime la version précédente de gcc de la liste des applications par défaut (si elle existe déjà)

Sudo update-alternatives --remove-all gcc

Faites de GCC 4.9 le compilateur par défaut sur le système

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

Sudo update-alternatives --config gcc

La dernière mise à jour GCC 4.9.1 est une version de correction de bogues de la branche GCC 4.9, qui contient des corrections importantes pour les régressions et les bogues graves dans GCC 4.9.0, avec plus de 88 bogues corrigés depuis la version précédente. De plus, la version 4.9.1 de GCC prend en charge OpenMP 4.0 également en Fortran, plutôt qu'en C et C++.

Remarque: vérifié sur ubuntu 14.04 LTS

2
Swap L