Atualizando o gcc para uma conta de usuário específica

Atualizando o gcc para uma conta de usuário específica

Eu trabalho em um cluster de computação executando CentOS6/RHEL6 que compartilho com cerca de 100 outros usuários, supervisionado por um único administrador de TI.

Recentemente, comecei a escrever em C++ e parte do meu código depende do C++ 11. De acordo comesta página da web, o C++ 11 é compatível com gccas versões 4.8.1 e superiores.

Infelizmente, o cluster de computação possui a versão 4.4.7.

Há pouco tempo, por um motivo diferente, tentei instalar gcca versão 4.8.4 em um local no meu diretório inicial no cluster. A instalação falhou, comesta mensagem de erro. Algumas pesquisas no Google me levaram a acreditar que eu deveria atualizar glibc, então tentei instalar uma versão mais recente em meu diretório inicial. Quefalhou dramaticamente.

Meu administrador de TI concluiu: "Provavelmente não funcionará modificar a versão gccno cluster". Antes de irritá-la com mais perguntas (porque neste momento euprecisaruma versão atualizada doalgunsCompilador C), estou coletando estes:

(1) A instalação da gccversão 4.8.1+ em minha conta de usuário é viável? (Depois que tentei fazer isso da última vez, algumas pessoas disseram que era uma ideia fundamentalmente terrível.)

(2) Se a resposta para (1) for sim, que cuidados devo tomar desta vez para garantir que a instalação seja bem-sucedida? A instalação glibcna minha conta é necessária? Isso é viável?

(3) Se a resposta para (1) for não, seria viável para meu administrador de TI instalar uma versão mais recente em gcctodo o sistema, sem interromper o código que depende da versão já presente?

(4) Se nenhuma das opções acima for viável gcc, a situação muda com outro compilador C?

Para resumir, estou procurando alguém com conhecimento gcc(ou outro compilador C) para explicar como uma pessoa (sem sudoautoridade) faria para atualizá-lo, se isso fosse possível.

Responder1

Consegui construir o GCC 4.8.5 a partir do código-fonte em um diretório inicial no Centos 6.7. Estou usando a distro glibc; Eu não tive que construir o glibc.

Advertência: estou fazendo isso em um sistema onde as dependências de construção do pacote fonte GCC 4.4.x da distribuição estão instaladas, bem como o libmpc-develpacote do repositório epel. Se eles estiverem faltando, talvez seja necessário construí-los a partir do código-fonte em um diretório inicial e alterar o processo de construção do gcc de alguma forma para usá-los a partir daí (se isso for possível).

Construindo o CCG:

  1. Pegue a fonte do GCC

    curl -LO https://mirrors.kernel.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.bz2
    
  2. Extrair

    tar xf gcc-4.8.5.tar.bz2
    
  3. Crie um diretório de construção fora do diretório de origem do GCC e vá até ele

     mkdir build && cd build
    
  4. Configurar. Eu fiz:

     ../gcc-4.8.4/configure --build=x86_64-linux-gnu --prefix=/home/rakslice/gcc_4_8 \
                            --enable-checking=release --enable-languages=c,c++,fortran \
                            --disable-multilib --program-suffix=-4.8
    
  5. Construir. Eu tenho 4 núcleos, então fiz:

     make -j 5
    
  6. Instalar

     make install
    
  7. Agora posso compilar e executar alguns códigos de teste.

     /home/rakslice/gcc_4_8/bin/g++-4.8     hello.cpp   -o hello
     ./hello
     Hello, World!
    

Responder2

Em relação às suas perguntas específicas:

(1) Sim, é viável, mas pode não ser divertido.

(2) Não, normalmente você pode usar o sistema glibc. Do gcc você precisa libstdc++, libgccetc.

Minha abordagem seria seguir oinstruções oficiais muito próximoe só recorra a uma instrução não oficial se ela corresponder muito bem à sua plataforma.

Na verdade, eu não me incomodaria com o 4.8 e iria direto para uma das séries de lançamentos atuais (5.2 ou 4.9).

Nota: Eu mesmo não fiz a instalação não-root do gcc, mas trabalho em sistemas que mantêm versões diferentes do gcc como módulos gnu.

informação relacionada