2013-05-01 12 views
26

Voglio iniziare a giocare con alcune delle nuove funzionalità di C++ 11 e sembra che il miglior supporto sia con gcc 4.8 e Squeeze con 4.4.5.Installazione di gcc 4.8 su Debian

Tuttavia, non voglio causare alcun "danno" alla configurazione corrente. Qual è il modo migliore per ottenere le versioni entrambe di di gcc in esecuzione side-by-side? Sono preoccupato soprattutto dell'elevato numero di dipendenze e il fatto di portarle tutte nel mio sistema attuale potrebbe renderlo instabile.

Qualcuno è riuscito a farlo e quali sono i passaggi coinvolti?

In caso contrario, probabilmente creerò una VM e gestirò un Debian "instabile", ma è una soluzione tutt'altro che ideale.

risposta

33

Se si installa GCC dalla fonte solo assicurarsi di non installare a /usr e non rovinare nulla fino. Se lo si installa come utente proprio, non root, quindi non vi è alcuna possibilità di incasinare il sistema.

Vedere http://gcc.gnu.org/wiki/InstallingGCC per la configurazione minima quasi a prova di idiota.

Ho varie versioni costruite come mio utente e installate in ~/gcc/4.X per vari X.

L'unica cosa di cui essere consapevoli di utilizzare tale configurazione è che le librerie condivise per la nuova versione non si trovano nel percorso di ricerca predefinito del linker dinamico, quindi è necessario utilizzare LD_LIBRARY_PATH o qualche altra soluzione per garantire che gli eseguibili trovino il libs da 4.8, vedere il libstdc++ FAQ e la pagina si collega per la manual

io uso una chiamata script wrapper g++11 che chiama semplicemente la nuova versione di GCC con -std=gnu++11 e passa una bandiera per il linker dicendogli di impostare il percorso alle librerie 4.8 nell'eseguibile:

$HOME/gcc/4.8/bin/g++ -Wl,-rpath,$HOME/gcc/4.8/lib64 -std=gnu++11 -Wall -Wextra -g "[email protected]" 
+3

ho trovato particolarmente utile lo script wrapper –

2

quelli rapidi:

  1. Basta aggiornare a testing, è solida e offre diverse versioni gcc concomitanti. Simile per Ubuntu, in 12.10 ho gcc/g ++ 4.4, 4.5, 4.6 e 4.7 in parallelo.

  2. Provare l'archivio di backports Debian, potrebbe avere una porta di gcc 4.8.

  3. Utilizzare la virtualizzazione: preferisco libvirt/kvm che è incredibilmente leggero su Linux poiché è basato sul kernel. Il mio server amd64 ha altre due installazioni a 32 bit proprio per questo motivo.

  4. Non proprio una domanda SO ...

+6

Dalle domande frequenti: "strumenti software comunemente utilizzati dai programmatori". Se gcc non corrisponde alla descrizione, mangerò il mio cappello :-) – paxdiablo

+3

SO è per la programmazione, ho visto la mafia moderatore spostare un sacco di domande simili a superutente. Personalmente, rispondo alla domanda qui e penso che i siti di SE stiano diventando troppo chiari. Sto solo dicendo che più o meno mi aspetto che questo venga chiuso/spostato. –

6

Debian ha il pacchetto sotto il nome di gcc-4.8 (o per il compilatore C++, g ++ - 4.8). L'installazione di questi pacchetti non rovinerà il tuo sistema operativo, a patto di non rinominarlo in g ++. Il pacchetto è elencato come sperimentale però.
Le informazioni sulla confezione sono here.

Aggiornamento: g ++ - 4.8 è ora in testing, ma un pacchetto aggiornato è in unstable

+0

Sta gestendo comunque stabile. –

+0

Può configurare il suo sistema per trovare pacchetti non stabili, se lo desidera. Guarda [questa domanda su ServerFault] (http://serverfault.com/questions/22414/how-can-i-run-debian-stable-but-install-some-packages-from-testing) (leggi la risposta accettata). – JKor

+1

Certo, ne sono consapevole perché sono stato uno sviluppatore/manutentore Debian dal 1995. Non è solo per i deboli di cuore in quanto il divario tra stable e testing/unstable può diventare ampio. Test molto più facili da usare come base, cosa che faccio da anni. Ma YMMV e anche il suo. –

16

Ho avuto lo stesso problema e non volevo eseguire l'upgrade completo ai test.

Jessie (testing) ora contiene g ++ - 4.8 che è conforme a C++ 11.

ho usato apt-pinning nel seguente modo:

Una fonte di Jessie è stato aggiunto a /etc/apt/sources.list:

deb http://ftp.uk.debian.org/debian/ jessie main non-free contrib 

/etc/apt/preferences è stata curata come ad esempio:

Package: * 
Pin: release n=wheezy 
Pin-Priority: 900 

Package: gcc* 
Pin: release n=jessie 
Pin-Priority: 910 

Poi,

$ sudo aptitude update 
$ sudo aptitude install gcc/jessie 

A questo punto ho selezionato la seconda opzione presentata per risolvere completamente le dipendenze.

+1

Dovrebbe essere 'n = jessie', distro codename è' n = 'in base a' man apt_preferences'. Inoltre, non funziona per me con 'a'. –

+1

Queste istruzioni interrompono Debian 7.8.0 (wheezy) rimuovendo l'installazione di gcc 4.7 esistente e non installando un gcc più recente. Non è possibile (o non funziona) utilizzare 'apt-get' per provare a reinstallare l'originale gcc 4.7, per tornare a uno stato di sviluppo funzionante. –

Problemi correlati