Question Obtenir + installer gcc / g ++ 4.9 sur Ubuntu? [dupliquer]


Cette question a déjà une réponse ici:

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'ai besoin de ça.


78
2018-03-02 03:05


origine


@muru Sauf ma question il y a des mois. Donc sa est un duplicata. - A T
Dupliquer indépendamment du temps? - C'est une politique étrange. - Et un peu mal nommé? - A T
Je dirais aussi que les réponses à ma question sont de meilleure qualité et d'une plus grande hétérogénéité que les siennes. Le nombre de votes est comparable également. Donc, je demande la fusion de sa dans la mienne, plutôt que l'inverse. - A T


Réponses:


Vous pouvez installer près de la version en amont de GCC depuis 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.


107
2018-04-28 08:14



J'ai Ubuntu 14.04 et cela n'a pas fonctionné pour moi. Avez-vous quitté un pas? Je ne vois pas g ++ - 4.9 dans launchpad.net/~ubuntu-toolchain-r/+archive/test - test
test, devrait fonctionner: gist.github.com/rutsky/bc40c6b4bee0ab5f9ee4 - Vladimir Rutsky
Mais cela ne fonctionne pas pour moi le 12.04: E: Impossible de localiser le paquet gcc-4.9 E: Impossible de trouver un paquet par regex 'gcc-4.9' Regards comme 12.04 était spécifiquement n'est pas supporté par ce dépôt, même si les nouvelles versions et les anciennes versions d'Ubuntu sont supportées. - Nickolai Leschov
En dernier lieu, j'ai trouvé nécessaire de changer le lien symbolique /usr/bin/g++ à partir d'une cible de /usr/bin/g++-4.8 à une cible de /usr/bin/g++-4.9. ... ou le laisser inchangé mais invoquer g++-4.9 directement. Enfin: support std :: regex. - DavidO
@DavidO - Vous devriez pouvoir utiliser le système alternatif pour éviter de modifier directement les liens symboliques. Voir askubuntu.com/q/26498/5682. - Josh Kelley


Introduction

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

Comment créer le paquet source et le diffuser depuis un référentiel local de manière appropriée. Cela fonctionnera sur n'importe quelle distribution à condition que les dépendances puissent être satisfaites / Cette méthode n'exige pas que vous installiez build-deps pour chaque paquet et que vous polluiez votre machine avec des paquets superflus, cela vous permettra de suivre les paquets . Cela prend juste quelques minutes pour le faire une fois, et peut ensuite être réutilisé pour reconstruire n'importe quel paquet dont vous avez besoin sans compter sur d'autres personnes pour empaqueter ppa pour vous ou télécharger un tas de .debs différents

L'avantage de la création ou de la suppression de fichiers .debs bruts à partir de debian est que cela va créer des paquets contre les paquets de votre distribution, dont la version / révision peut différer de celle utilisée pour la distribution Debian. C'est plus ou moins le processus de backporting des packages. Vous pouvez également utiliser n'importe quelle distribution Ubuntu pour créer des packages ciblés sur toute autre distribution (dans ce cas, la cible signifie générer sur les packages de référentiel standard) sans problème.

Basic-How-to-Build-a-deb

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

Probablement nécessaire: packaging-dev (tire 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 build)

    • 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 la source Debian

    • pull-debian-source gcc-4.9 [4.9.0-6]  la révision debian spécifique est facultative, mais peut être utile si vous voulez extraire des révisions expérimentales / instables / test / stables
    • vous pouvez aussi tirer de certaines distributions ubuntu en les ajoutant à sources.list en tant que deb-src et en utilisant sudo apt-get src 
  3. Package 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 fichier, pour le plus récent gcc c'est gcc-4.9_4.9.0-6.dsc qui est un fichier descripteur de package. .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 dans repo dir) apt-ftp archive packages . > Packages
    • (une des nombreuses façons de faire cela) sudo echo "deb [trusted=yes] file:/local/repo/Packages ./" > /etc/apt/sources.list.d/gcc-repo.list
    • Notez que vous pouvez également faire cette étape avec les fichiers .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

Astuces supplémentaires

Dépendances faciles

Utilisation de packages auto-compilés pour satisfaire les dépendances lors de la création de packages. (Je l'ai mis en place avec des dossiers ~/pbuilder  ~/pbuilder/precise_local(repo paquet local pour précis) et ~/pbuilder/precise_hooks (pour les scripts hook))

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 (en mode unix / linux typique, préfixe D indique quand le script est accroché 05 est auto-imposé nominatif et local est juste le nom, si vous n’avez qu’un seul crochet, il n’est pas important de savoir ce qu’il 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 build-depend. Ceci est extrêmement utile pour construire un arbre de dépendance localement lorsque vous portez en arrière des packages qui ont des dépendances qui ont également besoin de backport.

La solution VM

Pour ce faire, utilisez une image VM ou un conteneur LXC pour emprisonner ce mess.

Application de correctifs personnalisés

vous pouvez appliquer des correctifs personnalisés dans la plupart des paquets debian en utilisant quilt, les patchs de courtepointe peuvent utiliser des différences de la plupart des VCS (voir: en utilisant une courtepointe )

Il y a une étape supplémentaire, vous devez reconstruire le .dsc et .debian.tar.gz. La façon la plus propre que je connaisse est bzr-builddeb il a le meilleur taux de réussite IMHO (par rapport à git-build-package et autres scripts d'aide) et est beaucoup plus propre que l'appel debuild directement (bzr= VCS bazar canonique

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

Les étapes 1 à 4 sont à 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 répondre fournit une explication, ce on a des liens)


42
2018-06-12 16:03



Vraiment cool :-) - Marcos Roriz Junior
certaines étapes sont manquantes pour 14.04. sudo pbuilder build gcc-4.9_4.9.0-6.dsc échoue. - jfs


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 symbolique simple

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

ou

 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 symbole pour l'obtenir sans problèmes // S'il vous plait corrigez moi si je me trompe

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

ou

 vous pouvez simplement compiler avec

/usr/bin/gcc4.9 filename.c

gcc-4.9 est comme le gcc-4.8 "Ubuntu 14.04 gcc" ce n'est pas une grande déférence

proof


26
2017-08-05 08:27



gcc 4.9 a une énorme différence avec 4.8 et son support sur opnenmp 4.0.
pouvez-vous me trouver la différence s'il vous plaît! - hwez
Il prend en charge c ++ 1y (C ++ 14), pour les débutants. - Drew Noakes
Article sur les fonctionnalités de gcc 4.9: isocpp.org/blog/2014/04/gcc-4.9.0 - Kurt Krueckeberg


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

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

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 simplement 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!]


8
2018-03-02 03:05



Les deux liens sont morts ... - Raghav RV
Eh bien, cela n'a plus d'importance, les nouvelles versions de gcc de Ubuntus sont plus récentes que 4.9 - A T
La question était d'installer g ++ 4.9 sur Ubuntu ... Pas essentiellement sur l'un des "nouveaux Ubuntus" ...;) - Raghav RV
Ok @RaghavRV J'ai mis à jour tous les noms et URL de dep - A T


Actuellement (20141102), ajout de la PPA et invocation de la commande ci-dessus apt-get install gcc-4.9 g++-4.9 cpp-4.9imprimera un grand nombre de paquets 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 avec gcc-4.9 (mais ne désinstallera pas l'ancienne version), et entrera en même temps dans les compilateurs fortran à jour.


2
2017-11-02 19:09





J'ai dû forcer la version pour le paquet gcc-4.9-base pour dépasser le message d'erreur que vous avez posté. Ensuite, 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
2018-04-13 16:51



Dans mon cas, je devais forcer une version spécifique de libstdc++6, qui est une dépendance. Pour une raison quelconque, il souhaitait utiliser une version plus ancienne qu’il pensait être une version plus récente, de sorte qu’il ne serait pas mis à jour sans forcer. - Emre


Installer GCC GNU 4.9

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

sudo apt-get update

sudo apt-get install gcc-4.9

Supprimer 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

Faire 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 bogue de la branche GCC 4.9 contenant des correctifs importants 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. En plus de cela, la version GCC 4.9.1 supporte OpenMP 4.0 également dans Fortran, plutôt que juste en C et C ++

Note: Vérifié sur Ubuntu 14.04 LTS


2
2017-08-25 05:56