instala o gcc mais recente no rhel 6 x86_64

9

Eu tenho um servidor RHEL 6 com o gcc versão 4.4.7. Eu queria atualizar a versão do gcc (acho que a atual é de 4.8). A atualização do Yum não funciona. Além disso, respostas SO para uma pergunta semelhante no CentOS não funciona. Eu segui os métodos na resposta aceita, a saída é "Erro ao obter dados de repositório para testing-1.1-devtools-6, repositório não encontrado". Também não tenho certeza se devo seguir os métodos para os CentOS.

Alguém atualizou o gcc no servidor RHEL 6 x86_64?

    
por rivu 20.04.2014 / 02:49

5 respostas

3

O método mais fácil é usar uma construção binária fornecida por um repositório YUM. Uma dessas opções seria usar o repositório hop5.in . Especificamente, esta página: gcc - Vários compiladores (C, C ++, Objective-C, Java, ...) . Eles estão fornecendo 4.8.2, que deve funcionar com o CentOS 6.3 ou 6.4. Você pode querer fazer uma atualização antes:

$ sudo yum update

A outra opção seria usar o Conjunto de ferramentas para desenvolvedores , especificamente a versão fornecida fornecida pela Scientific Linux.

Seguindo as instruções de instalação , você basicamente fará o seguinte:

adicione repositórios
$ sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo \
    http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
$ wget -O /etc/yum.repos.d/slc5-devtoolset.repo \
    http://linuxsoft.cern.ch/cern/devtoolset/slc5-devtoolset.repo
instale o devtoolset
$ sudo yum install devtoolset-2

Atualização 1

O repositório do hop5.in YUM parece ter sido removido, então o único recurso é fazer uso do método devtoolset destacado acima.

Exemplos adicionais para a instalação do via devtoolset são destacados neste GitHub Gist: Instalando o gcc 4.8 e o Linuxbrew no CentOS 6 .

    
por 20.04.2014 / 07:42
2

Coleções de software da Red Hat vem com o GCC 4.9, você pode olhar para ativar esse canal.

    
por 23.02.2016 / 21:53
2

Eu construí versões mais recentes do gcc para rhel6 para várias versões agora (desde 4.7.x para 5.3.1).

O processo é bastante fácil graças ao builds do fedora gcc encontrados no koji

Simplesmente pegue o último src rpm para qualquer versão que você necessite (por exemplo, 5.3.1 ).

Basicamente, você começaria determinando os requisitos de criação emitindo rpm -qpR src.rpm procurando por qualquer requisito de versão:

rpm -qpR gcc-5.3.1-4.fc23.src.rpm | grep -E '= [[:digit:]]'
binutils >= 2.24
doxygen >= 1.7.1
elfutils-devel >= 0.147
elfutils-libelf-devel >= 0.147
gcc-gnat >= 3.1
glibc-devel >= 2.4.90-13
gmp-devel >= 4.1.2-8
isl = 0.14
isl-devel = 0.14
libgnat >= 3.1
libmpc-devel >= 0.8.1
mpfr-devel >= 2.2.1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
systemtap-sdt-devel >= 1.3

Agora vem a parte tediosa - qualquer pacote que tenha uma versão maior do que a fornecida por yum fro sua distro precisa ser baixada de koji e repita recursivamente o processo até que todos os requisitos de dependência sejam atendidos.

Eu faço batota, btw.
Eu costumo reembalar o rpm para conter uma árvore de compilação correta usando o recurso gnu para usar os requisitos corretamente colocados e nomeados, portanto gmp / mpc / mpfr / isl (o cloog não é mais necessário) são baixados e desmarcados no caminho correto, e o novo O tar (inchado) é reconstruído em um novo src rpm (com pequenas alterações no arquivo de especificação) sem dependência de suas versões empacotadas (rpm). Como não conheço ninguém usando o ADA, simplesmente removo as partes referentes ao mosquito do specfile, simplificando ainda mais o processo de compilação, deixando-me apenas com binutils para se preocupar.
O Gcc pode realmente construir com binutils mais antigos, então se você estiver com pressa, edite o specfile para requerer a versão binutils já presente no seu sistema. Isso resultará em um gcc ligeiramente danificado, mas na maioria das vezes ele terá um bom desempenho. Isso funciona muito bem principalmente.

UPDATE 1

O método mais simples para abrir um rpm src é provavelmente yum instalar o rpm e acessar tudo em ~ / rpmbuild, mas eu prefiro

mkdir gcc-5.3.1-4.fc23
cd gcc-5.3.1-4.fc23
rpm2cpio ../gcc-5.3.1-4.fc23.src.rpm | cpio -id
tar xf gcc-5.3.1-20160212.tar.bz2
cd gcc-5.3.1-20160212
contrib/download_prerequisites
cd ..
tar caf gcc-5.3.1-20160212.tar.bz2 gcc-5.3.1-20160212
rm -rf gcc-5.3.1-20160212
# remove gnat
sed -i '/%global build_ada 1/ s/1/0/' gcc.spec
sed -i '/%if !%{build_ada}/,/%endif/ s/^/#/' gcc.spec
# remove gmp/mpfr/mpc dependencies
sed -i '/BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1/ s/.*//' gcc.spec
# remove isl dependency
sed -i '/BuildRequires: isl = %{isl_version}/,/Requires: isl-devel = %{isl_version}/ s/^/#/' gcc.spec
# Either build binutils as I do, or lower requirements
sed -i '/Requires: binutils/ s/2.24/2.20/' gcc.spec
# Make sure you don't break on gcc-java
sed -i '/gcc-java/ s/^/#/' gcc.spec

Você também tem a opção de definir o prefixo para que este rpm seja instalado lado a lado sem interromper o rpm da distribuição (mas requer a alteração do nome e algumas modificações nos nomes dos pacotes internos). Eu costumo adicionar um módulo de ambiente para que eu possa carregar e descarregar esse gcc conforme necessário (semelhante a como as coleções funcionam) como parte do rpm (para adicionar uma nova dependência).

Finalmente, crie a árvore rpmbuild e coloque os arquivos que devem ser criados:

yum install rpmdevtools rpm-build
rpmdev-setuptree
cp * ~/rpmbuild/SOURCES/
mv ~/rpmbuild/{SOURCES,SPECS}/gcc.spec
rpmbuild -ba ~/rpmbuild/SPECS/gcc.spec

UPDATE 2

Normalmente não se deve usar um "servidor" para desenvolvimento - é por isso que você tem o fedora que já vem com o mais recente gcc. Eu tenho alguns requisitos particulares, mas você deve realmente considerar usar a ferramenta certa para a tarefa - rhel / centos para executar aplicativos de produção, fedora para desenvolver esses aplicativos, etc.

    
por 23.02.2016 / 21:42
0

Olá pessoal, aqui está o que eu fiz (compilando do zero). Sem ofensa a outra resposta Tenho certeza de que funciona, mas o GCC é especialmente importante para a segurança, então prefiro compilar da fonte original e oficial:

yum -y install gmp-devel mpfr-devel libmpc-devel glibc-devel glibc-devel.i686 zip unzip jar
wget http://mirrors.kernel.org/gnu/gcc/gcc-5.5.0/gcc-5.5.0.tar.gz
tar -zxvf gcc-5.5.0.tar.gz
cd gcc-5.5.0
./configure
make
make install
yum remove gcc
rm -rf /usr/bin/gcc
rm -rf /usr/bin/c++
rm -rf /usr/bin/cc
ln -s /usr/local/bin/x86_64-unknown-linux-gnu-gcc-5.5.0 /usr/bin/gcc
ln -s /usr/local/bin/x86_64-unknown-linux-gnu-c++ /usr/bin/c++
ln -s /usr/local/bin/x86_64-unknown-linux-gnu-gcc /usr/bin/cc

Fonte: link

    
por 24.01.2018 / 18:59
-1

você pode tentar buid.GCC fonte gcc requer MPC, MPFR e GMP como pré-requisitos.Para GCC 4.8, as dependências de versão são                   MPC 0,8                   GMP 6.0                   MPFR 2.4.2.Down carrega os pacotes fonte e instala todos os pacotes sob /usr/lib.A ordem de instalação é gmp, mpfr, mpc

    
por 10.08.2015 / 16:47