Ottenere + installare gcc / g ++ 4.9 su Ubuntu? [duplicare]

78

Come installo l'ultima versione di gcc e g ++?

Sto usando una varietà di funzionalità C ++ 11 e C ++ 1y; è per questo che ho bisogno di questo.

    
posta A T 02.03.2014 - 04:05

7 risposte

107

Puoi installare la versione GCC vicino a Ubuntu Toolchain PPA: link

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

Testato su Ubuntu 14.04.

    
risposta data Vladimir Rutsky 28.04.2014 - 10:14
42

Introduzione

insegnare a un uomo a pescare ecc.

Come creare il pacchetto sorgente e servirlo da un repository locale in modo apt-friendly. Questo funzionerà su qualsiasi distribuzione a condizione che le dipendenze possano essere soddisfatte / Questo metodo non richiede l'installazione di build-deps per ogni pacchetto e l'inquinamento della macchina con pacchetti estranei, questo ti permetterà di tenere il passo con i pacchetti man mano che vengono aggiornati in debian experimental . Bastano pochi minuti per farlo una volta, e poi possono essere riutilizzati per ricostruire qualsiasi pacchetto di cui hai bisogno senza fare affidamento su altre persone per confezionare ppa per te o scaricare un sacco di diversi .debs

Il vantaggio di costruire e tirare i file .debs grezzi da debian è che questo costruirà pacchetti contro i pacchetti nella distribuzione che potrebbero differire nella versione / revisione da quelli usati come dipendenze di build per la distribuzione di debian. Questo è più o meno il processo per il backporting dei pacchetti. Puoi anche utilizzare qualsiasi distribuzione di ubuntu per creare pacchetti destinati a qualsiasi altra distribuzione (obiettivo in questo caso significa compilare i pacchetti del repository standard) senza problemi.

Basic-How-to-Build-a-deb

(non per il caricamento di ppa - questo ha requisiti beurocratici dal launchpad

Probabilmente richiesto: packaging-dev (estrae build-essential pubilder ubuntu-dev-tools tra gli altri)

  1. Imposta pbuilder (questo ti consente di creare un pacchetto in un chroot senza inquinare il tuo sistema con pacchetti dipendenti dalla build)

    • sudo pbuilder create ,
    • se vuoi costruire per una distribuzione specifica, (pbuilder usa la versione del sistema di build in un chroot) puoi usare pbuilder-dist [precise/oneric/trusy/etc...] create
  2. Ottieni l'origine debian

    • pull-debian-source gcc-4.9 [4.9.0-6] specifica revisione debian è facoltativa, ma può essere utile se si desidera eseguire revisioni sperimentali / instabili / test / stabili
    • puoi anche prelevare da specifiche distribuzioni di ubuntu aggiungendole a sources.list come deb-src e utilizzando sudo apt-get src
  3. Crea pacchetto

    • sudo pbuilder build gcc-4.9_4.9.0-6.dsc
    • Nei file scaricati c'è un file .dsc , per il gcc più recente è gcc-4.9_4.9.0-6.dsc che è un file descrittore del pacchetto. .orig.tar.[gz/xz] è il tarball sorgente.
  4. Crea repository Apt locale

    • mkdir /convenient/place/for/repo
    • cp /var/cache/pbuilder/result/* /path/to/repo
    • (supponendo che tu sia nella directory repo) apt-ftp archive packages . > Packages
    • (uno dei tanti modi per farlo) sudo echo "deb [trusted=yes] file:/local/repo/Packages ./" > /etc/apt/sources.list.d/gcc-repo.list
    • Nota puoi anche fare questo passo con .debs scaricati da qualsiasi luogo (saltare i punti 1-3)
  5. Installa

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

Trucchi extra

Dipendenze Easy Backporting

Usare pacchetti auto-compilati per soddisfare le dipendenze quando si creano pacchetti. (L'ho impostato con le cartelle ~/pbuilder ~/pbuilder/precise_local (repository locale del pacchetto per preciso) e ~/pbuilder/precise_hooks (per gli script hook))

Aggiungi quanto segue al tuo ~/.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"

in precise_hooks crea un file D05local (in tipico modo unix / linux, prefisso D indica quando lo script è agganciato 05 è auto-imposto nome-ordinazione e local è solo il nome, se hai un solo hook non è importante ciò che viene chiamato fintanto che D è il prefisso

lo script è un one-liner

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

Ora qualsiasi pacchetto inserito in precise_local soddisferà build-depends. Questo è estremamente utile per costruire un albero delle dipendenze localmente quando i pacchetti back-porting hanno dipendenze che necessitano anche di backporting

La soluzione VM

Per farlo in un modo ancora più pulito, usa un'immagine VM o un contenitore LXC per mettere in prigione questo caos.

Applicazione di patch personalizzate

puoi applicare patch personalizzate nella maggior parte dei pacchetti di debian usando quilt , le patch di quilt possono usare diff dalla maggior parte dei VCS (vedi: usando la trapunta )

C'è un passaggio aggiuntivo, devi ricostruire .dsc e .debian.tar.gz . Il modo più pulito che conosco è bzr-builddeb ha il più alto tasso di successo IMHO (rispetto a git-build-package e altri script helper) ed è molto più pulito di chiamare debuild direttamente ( bzr = VCS di bazaar canonical)

  1. sudo apt-get install bzr-builddeb
  2. (supponendo che .orig.tar.gz sia estratto e .debian.tar.gz sia estratto e inserito in esso
    • bzr init
    • bzr add
    • bzr commit
  3. (opzionale)
    • modifica debian/changelog
    • aggiungi patch a debian/patches/ e modifica debian/patches/series (la trapunta ha anche l'utilità per aggiungere patch o per modificarle al volo, vedi documentazione)
    • bzr add debian/
    • bzr commit
  4. bzr builddeb -- -S -us -uc Questo ricostruisce il file sorgente e lo lascia senza firma (è necessaria la firma gpg per il caricamento PPA / distro, ma non per i repository locali privati)
  5. cd ../build-area/ Continua dal passaggio 3 sopra.

I passaggi 1-4 qui sono praticamente ciò che è necessario caricare su un PPA (non prendono file binari), ma sono necessari alcuni passaggi per soddisfare la burocrazia del launchpad (questo risposta fornisce una spiegazione, questo uno ha alcuni link)

    
risposta data crasic 12.06.2014 - 18:03
26

installa

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

dopo di ciò se controlli la versione di gcc troverai la vecchia versione

gcc --version

quindi possiamo correggerlo con semplici simboli

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

puoi aggiornare utilizzando update-alternatives

// In realtà ho provato il simbolico & amp; so che funzionerà ma potresti usare il simbolico per ottenerlo senza problemi // per favore correggimi se ho torto

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

puoi semplicemente compilarlo
/usr/bin/gcc4.9 filename.c

gcc-4.9 è come gcc-4.8 "ubuntu 14.04 gcc" non è un grande deferenza

    
risposta data hwez 05.08.2014 - 10:27
8

Debian offre un pacchetto: link - per prevenire problemi con la compatibilità con Ubuntu / Debian; non aggiungerlo al tuo sources.list.

Invece, scarica semplicemente tutti questi:

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

Dai server di Debian, ad esempio:

link

Quindi installali, ad esempio $ for package in *.deb; do sudo dpkg --install "$package"; done

[È più facile eseguire quel loop bash un paio di volte fino a coprire tutte le dipendenze che ricordare l'ordine in cui le hai scaricate!]

    
risposta data A T 02.03.2014 - 04:05
2

Attualmente (20141102) aggiungendo il PPA e invocando il comando precedente apt-get install gcc-4.9 g++-4.9 cpp-4.9 stamperai una manciata di pacchetti suggeriti. Installali tutti tranne per libvtv0-dbg (che ha un conflitto di dipendenze):

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

(salta i pacchetti -dbg se non ti interessano), e poi fai un apt-get dist-upgrade --auto-remove . L'ultimo passaggio sostituirà fondamentalmente il tuo gcc-4.8 con gcc-4.9 (ma non disinstallerà la versione precedente) e inserirà contemporaneamente i compilatori fortran aggiornati.

    
risposta data RJVB 02.11.2014 - 20:09
2

Ho dovuto forzare la versione per il pacchetto gcc-4.9-base per superare il messaggio di errore che hai postato. Quindi l'installazione ha funzionato

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

Ora puoi fare il normale

sudo apt-get install gcc-4.9
    
risposta data mark.kedzierski 13.04.2015 - 18:51
2

Installa GCC GNU 4.9

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

sudo apt-get update

sudo apt-get install gcc-4.9

Rimuovi la versione precedente di gcc dall'elenco delle applicazioni predefinite (se già esiste)

sudo update-alternatives --remove-all gcc

Rendi GCC 4.9 il compilatore predefinito sul sistema

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

sudo update-alternatives --config gcc

L'ultimo aggiornamento GCC 4.9.1 è una versione bug-fix dal ramo GCC 4.9 contenente importanti correzioni per regressioni e bug gravi in ​​GCC 4.9.0 con oltre 88 bug risolti dalla versione precedente. In aggiunta a ciò, GCC 4.9.1 supporta OpenMP 4.0 anche in Fortran, piuttosto che solo in C e C ++

Nota: controllato su ubuntu 14.04 LTS

    
risposta data Swap L 25.08.2015 - 07:56

Leggi altre domande sui tag