Pergunta

O grupo de produtos para o qual trabalho está usando atualmente o gcc 3.4.6 (sabemos que é antigo) para uma grande base de código C de baixo nível e deseja atualizar para uma versão posterior.Vimos benefícios de desempenho testando diferentes versões do gcc 4.x em todas as plataformas de hardware em que testamos.Estamos no entanto muito com medo de bugs do compilador c (por um bom motivo historicamente) e me pergunto se alguém tem uma ideia de qual versão devemos atualizar.

As pessoas estão usando o 4.3.2 para grandes bases de código e acham que funciona bem?

Foi útil?

Solução

O melhor controle de qualidade para o gcc é o kernel do Linux.GCC é o compilador preferido para basicamente todos os principais programas C/C++ de código aberto.Um GCC lançado, especialmente um como o 4.3.X, que está nas principais distribuições Linux, deve ser muito bom.

O GCC 4.3 também oferece melhor suporte para otimizações em CPUs mais recentes.

Outras dicas

Quando migrei um projeto do GCC 3 para o GCC 4 executei vários testes para garantir que o comportamento era o mesmo antes e depois.Você pode simplesmente executar um conjunto de testes (esperançosamente automatizados) para confirmar o comportamento correto?Afinal, você deseja o comportamento "correto", não necessariamente o comportamento do GCC 3.

Não tenho uma versão específica para você, mas por que não ter uma 4.X e 3.4.6 instalado?Então você pode tentar manter o código compilado em ambas as versões e, se encontrar um bug que interrompe o show na versão 4, você terá uma política de saída.

Use o mais recente, mas caçar e entender cada aviso -Wall dá.Para diversão extra, há mais sinalizadores de alerta para exibir.Você fazer tenha um extenso conjunto de testes de regressão (e outros), execute todos eles e verifique-os.

O GCC (particularmente C++, mas também C) mudou bastante.Ele faz análise e otimização de código muito melhores e lida com códigos que invocam comportamentos indefinidos de maneira diferente.Portanto, o código que "funcionou bem", mas que realmente dependia de alguma interpretação específica de construções inválidas, provavelmente será quebrado.Esperamos que o compilador emita um aviso ou erro, mas não há garantia de tal sorte.

Se você estiver interessado no OpenMP, precisará migrar para o gcc 4.2 ou superior.Estamos usando o 4.2.2 em uma base de código de cerca de 5 milhões de linhas e não estamos tendo problemas com isso.

Não posso dizer nada sobre o 4.3.2, mas meu laptop é um sistema Gentoo Linux construído com GCC 4.3.{0,1} (dependendo de quando cada pacote foi construído), e não vi nenhum problema.No entanto, isso é principalmente apenas o uso padrão da área de trabalho.Se você tiver algum código estranho, sua milhagem pode variar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top