Come installare g ++ 4.7.2 e c ++ 11 su CentOS 5.x?


8

Sto cercando di installare l'ultima versione stabile g++e c++11. Il mio ospite l'ha fatto yum installe ha pensato che fosse l'ultimo, ma non lo è, e ora stanno dicendo che questo va oltre il loro livello di supporto.

Ho studiato tutto su come eseguire questa operazione e non riesco a far funzionare nulla o non ho idea di cosa stia dicendo la soluzione suggerita.

Qual è il modo più semplice per installare g++4.7.2 e c++11su CentOS 5.9 ?


2
Non vedo nulla in ciò che (ai miei occhi molto inesperti) richiede alcune nuove funzionalità C ++. Installare software extra (dalla fonte, non di meno) non deve essere preso alla leggera (se si utilizza CentOS, è presumibilmente un'applicazione enterprise). Non per qualcuno con ore di esperienza su Linux, in ogni caso. Riconsidera attentamente le tue opzioni.
vonbrand,

1
che cosa richiede lambda così insistentemente? Forse la soluzione migliore è installare l'ultima versione di Fedora, dove gcc-4.7.2 è il compilatore predefinito, gestito dalla distribuzione ?
vonbrand,

2
Non sono un esperto di C ++, ma "ordina per N-esimo in un vettore di int" richiede un confronto tra vettori, e questo non è un requisito esotico solo per essere riempito con l'ultimo C ++. Certo, potrebbe essere più facile, ma se qualcosa di così semplice non potesse essere fatto dalle primissime versioni di STL, sarei completamente sbalordito. Ottieni un esperto C ++ a bordo?
vonbrand,

Hai considerato le librerie BOOST? Una grande percentuale di C ++ 11 proveniva da lì ...
Aaron D. Marasco il

c ++ 11 non è un compilatore, è uno standard. vedi la mia risposta.
Golfo Persico

Risposte:


9

Da questa risposta a "Installa gcc 4.7 su CentOS [6.x]", il modo più semplice per ottenere g++4.7, e gli strumenti e le librerie richiesti, per CentOS 5.x è tramite il devtoolspacchetto:

cd /etc/yum.repos.d
wget http://people.centos.org/tru/devtools/devtools.repo 
yum --enablerepo=testing-devtools-6 install devtoolset-1.0

Dal momento che si sta eseguendo g++manualmente (invece che tramite make), è necessario aggiornare la $PATHvariabile in modo vostra shell utilizzerà il nuovo gcc, g++e così via binari:

export PATH=/opt/centos/devtoolset-1.0/root/usr/bin/:$PATH

A questo punto, g++dovresti essere la versione 4.7.0

$ g++ --version
g++ (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Tenere presente che l'installazione gcce gli strumenti e le librerie associati in questo modo si affidano al manutentore del repository per mantenere aggiornati i propri pacchetti.

Se sei interessato a mantenerti gccaggiornato, potresti prendere in considerazione l' idea gccdi costruire dalla fonte .

Inoltre, la compilazione di programmi con una versione diversa di g++e libstdc++rispetto a quella installata sul tuo sistema può causare tutti i tipi di divertimento , affrontando il quale va oltre lo scopo di questa risposta. Potrebbe valere la pena passare a una distribuzione Linux che supporti ciò che stai facendo.


Ho aggiornato le istruzioni: il pacchetto che si desidera yuminstallare è devtoolset-1.0, poiché contiene altri strumenti di sviluppo richiesti; e ti consigliamo di aggiornare la tua $PATHvariabile dal momento che stai avviando g++dalla riga di comando.
Reed Kraft-Murphy,

Quando creo una nuova console, gcc è ancora nella vecchia versione. Come faccio a rendere la nuova versione predefinita?
BT,

1
Per impostarlo in modo permanente, devi aggiungere la export PATH..linea nel tuo ~ / .profile o ~. / Profile_bash o equivalente: superuser.com/questions/809250/…
BT

Mostra ancora "g ++ (GCC) 4.1.2" dopo questo :-(
IllidanS4 vuole Monica indietro il

1

I gestori di pacchetti sono fantastici, ma (comprensibilmente) generalmente non includeranno l'ultima versione del software. Essendo CentOS una distribuzione che si concentra in particolare sui server, favorisce la stabilità (e test approfonditi) rispetto all'ultima e alla più brillante. Ecco le tue soluzioni:

Cambia distro

Altre distribuzioni come Arch Linux, Sabayon Linux o Debian "Sid" includono le versioni più recenti molto più velocemente. Puoi considerare di cambiare distro.

Costruiscilo tu stesso

Se sei bloccato con CentOS, la soluzione migliore è costruire gcc dal sorgente . Significa ottenere il codice sorgente, assicurarsi che le dipendenze siano già presenti sul sistema (in caso contrario, sono sicuro che puoi ottenerle dal gestore dei pacchetti CentOS), compilare il codice sorgente in un eseguibile binario e installare il file eseguibile sul tuo sistema .

Non è sicuramente il modo più semplice per farlo, ma imparerai molto su Unix nel processo. Assicurati di leggere il documento alcune volte per assicurarti di ottenere tutto e fai domande se qualcosa di specifico non è chiaro.

Essere pazientare

Ad un certo punto, questa versione (o più recente) di gcc / g ++ entrerà nel gestore pacchetti. Se aspetti (fino a diversi mesi, non ho molta familiarità con il ciclo di rilascio di CentOS), alla fine otterrai ciò che desideri.


1

Sono troppo nuovo per commentare la risposta di Reed. Ha funzionato bene nel mio caso. L'unica cosa che volevo notare (forse questo è qualcosa per Reed?) È che dovevo installare con una riga di comando leggermente diversa:

yum --enablerepo=testing-devtools-5 install devtoolset-1.0

(La risposta di Reed aveva --enablerepo=testing-devtools-6, che non funzionava.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.