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

1

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

Recentemente, comecei a escrever em C ++ e alguns dos meus códigos dependem do C ++ 11. De acordo com esta página da Web , o C ++ 11 é suportado por gcc versões 4.8.1 e posteriores.

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

Há pouco, por um motivo diferente, tentei instalar o gcc versão 4.8.4 em um local no meu diretório pessoal no cluster. A instalação falhou, com esta mensagem de erro . Alguns pesquisando no Google levaram-me a acreditar que eu deveria atualizar glibc , então tentei instalar uma versão mais recente disso no meu diretório pessoal. Que falhou drasticamente .

Meu administrador de TI concluiu: "Provavelmente não funcionará modificar a versão de gcc no cluster." Antes de incomodá-la com mais perguntas (porque neste momento eu preciso de uma versão atualizada do compilador C), eu estou fazendo isso:

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

(2) Se a resposta para (1) for sim, que precauções devo tomar este tempo para garantir que a instalação seja bem-sucedida? A instalação de glibc na minha conta é necessária? Isso é viável?

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

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

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

    
por dbliss 15.10.2015 / 09:18

2 respostas

2

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

Ressalva: Estou fazendo isso em um sistema onde as dependências de compilação do pacote fonte do GCC 4.4.x da distribuição estão instaladas, assim como o pacote libmpc-devel do repositório epel. Se estes estiverem faltando, você pode ter que construí-los a partir do código-fonte em um diretório inicial primeiro e mudar o processo de compilação do gcc de alguma forma para usá-los a partir daí (se isso for possível).

Construindo o GCC:

  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 compilação fora do diretório de origem do GCC e vá até ele

     mkdir build && cd build
    
  4. Configure. 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 eu fiz:

     make -j 5
    
  6. Instalar

     make install
    
  7. Agora posso compilar e executar algum código de teste.

     /home/rakslice/gcc_4_8/bin/g++-4.8     hello.cpp   -o hello
     ./hello
     Hello, World!
    
por 17.10.2015 / 05:49
0

Com relação a 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 de libstdc++ , libgcc etc.

A minha abordagem seria seguir as instruções oficiais de muito perto e recorrer apenas a uma informação não oficial. instrução se corresponder muito bem à sua plataforma.

Eu realmente não me incomodaria com o 4.8 e iria direto para uma das séries de lançamento atuais (5.2 ou 4.9).

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

    
por 16.10.2015 / 17:42