Como instalar o g ++ 4.7.2 e c ++ 11 no CentOS 5.x?

8

Estou tentando instalar o mais recente estável g++e c++11. Meu anfitrião fez isso yum installe achou que era o mais recente, mas não é, e agora eles estão dizendo que isso está além do nível de suporte.

Eu olhei por toda parte sobre como fazer isso e não consigo fazer nada funcionar, ou não tenho idéia do que a solução sugerida está dizendo.

Qual é a maneira mais fácil de instalar o g++4.7.2 e c++11no CentOS 5.9 ?

jasonwryan
fonte
2
Não vejo nada disso que (aos meus olhos muito inexperientes) exija algum novo recurso C ++. Instalar software extra (a partir da fonte, não menos) não deve ser tomado de ânimo leve (se você estiver usando o CentOS, presumivelmente é um aplicativo corporativo). Não para alguém com horas de experiência com Linux, em qualquer caso. Reconsidere suas opções com cuidado.
21413 vonbrand
1
o que exige lambda com tanta insistência? Talvez sua melhor aposta seja instalar o Fedora mais recente, onde o gcc-4.7.2 é o compilador padrão, mantido pela distribuição ?
vonbrand
2
Não sou especialista em C ++, mas "classificar por N-ésimo int em um vetor de int" requer uma comparação entre vetores, e esse não é um requisito exótico, apenas para ser preenchido com o C ++ mais recente. Claro, pode ser mais fácil, mas se algo simples assim não pudesse ser feito desde as primeiras versões do STL, eu ficaria completamente pasmo. Obter um especialista em C ++ a bordo?
21813 vonbrand
Você já considerou as bibliotecas do BOOST? Uma grande porcentagem de C ++ 11 veio de lá ...
Aaron D. Marasco
O c ++ 11 não é compilador, é um padrão. veja minha resposta.
Golfo Pérsico

Respostas:

9

Desde esta resposta para "Instalar gcc 4.7 no CentOS [6.x]", a maneira mais fácil de obter g++4.7, e as ferramentas e bibliotecas necessárias, para CentOS 5.x é através do devtoolspacote:

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

Desde que você está executando g++manualmente (em oposição ao meio make), você precisa atualizar seu $PATHvariável para que o seu shell irá utilizar o novo gcc, g++etc. binários:

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

Neste ponto, você g++deve estar na versão 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.

Esteja ciente de que a instalação gcce as ferramentas e bibliotecas associadas dessa maneira dependem do mantenedor do repositório para manter seus pacotes atualizados.

Se você estiver interessado em manter suas informações gccatualizadas, considere construir a gccpartir da fonte .

Além disso, a compilação de programas com uma versão diferente g++e libstdc++que estão instaladas no sistema pode causar todo tipo de diversão , além do que está além do escopo desta resposta. Pode valer a pena mudar para uma distribuição Linux compatível com o que você está fazendo.

Reed Kraft-Murphy
fonte
Atualizei as instruções - o pacote que você deseja yuminstalar é o devtoolset-1.0que contém outras ferramentas de desenvolvimento necessárias; e você desejará atualizar sua $PATHvariável desde o lançamento a g++partir da linha de comando.
Reed-Kraft Murphy
Quando crio um novo console, o gcc ainda está na versão antiga. Como faço para tornar a nova versão o padrão?
BT
1
Para definir isso permanentemente, você deve adicionar a export PATH..linha no seu ~ / .profile ou ~. / Profile_bash ou equivalente: superuser.com/questions/809250/…
BT
Ainda mostra "g ++ (GCC) 4.1.2" depois disso :-(
IllidanS4 quer Monica de volta em
1

Os gerenciadores de pacotes são ótimos, mas (compreensivelmente) geralmente não incluem a versão mais recente do software. Sendo o CentOS uma distribuição especialmente focada em servidores, favorece a estabilidade (e testes extensivos) do que o mais recente e o mais brilhante. Aqui estão as suas soluções:

Alterar distribuição

Outras distribuições como Arch Linux, Sabayon Linux ou Debian "Sid" incluem versões mais recentes muito mais rapidamente. Você pode considerar mudar as distribuições.

Construa você mesmo

Se você está preso ao CentOS, sua melhor aposta é criar o gcc a partir da fonte . Significa obter o código-fonte, garantir que as dependências já estejam presentes no seu sistema (caso contrário, tenho certeza de que você pode obtê-las no gerenciador de pacotes do CentOS), compilar a fonte em um executável binário e instalar o executável no seu sistema sistema .

Não é a maneira mais fácil de fazer isso com certeza, mas você aprenderá muito sobre o Unix no processo. Leia o documento algumas vezes para obter tudo e faça perguntas se algo específico não estiver claro.

Seja paciente

Em algum momento, esta versão (ou mais recente) do gcc / g ++ entrará no gerenciador de pacotes. Se você esperar (por vários meses, eu não estou muito familiarizado com o ciclo de lançamento do CentOS), você conseguirá o que deseja.

rahmu
fonte
1

Hum, sou novo demais para comentar a resposta de Reed. Isso funcionou bem para mim. A única coisa que eu gostaria de observar (talvez isso seja algo para o Reed?) É que eu tinha que instalar com uma linha de comando um pouco diferente:

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

(A resposta de Reed teve --enablerepo=testing-devtools-6, o que não funcionou.)

Sean Suchter
fonte