Pregunta

El grupo de productos para el que trabajo utiliza actualmente gcc 3.4.6 (sabemos que es antiguo) para una gran base de código C de bajo nivel y desea actualizar a una versión posterior.Hemos visto beneficios de rendimiento al probar diferentes versiones de gcc 4.x en todas las plataformas de hardware en las que lo probamos.nosotros somos sin embargo muy Tengo miedo de los errores del compilador C (por una buena razón históricamente) y me pregunto si alguien tiene idea de a qué versión deberíamos actualizar.

¿La gente usa 4.3.2 para bases de código grandes y siente que funciona bien?

¿Fue útil?

Solución

El mejor control de calidad para gcc es el kernel de Linux.GCC es el compilador elegido básicamente para todos los principales programas C/C++ de código abierto.Un GCC lanzado, especialmente uno como 4.3.X, que se encuentra en las principales distribuciones de Linux, debería ser bastante bueno.

GCC 4.3 también tiene mejor soporte para optimizaciones en CPU más nuevas.

Otros consejos

Cuando migré un proyecto de GCC 3 a GCC 4, ejecuté varias pruebas para asegurarme de que el comportamiento fuera el mismo antes y después.¿Puede simplemente ejecutar una serie de pruebas (con suerte, automatizadas) para confirmar el comportamiento correcto?Después de todo, usted desea el comportamiento "correcto", no necesariamente el comportamiento de GCC 3.

No tengo una versión específica para ti, pero ¿por qué no tener una 4.X? y 3.4.6 instalado?Luego, podría intentar mantener el código compilando en ambas versiones, y si se encuentra con un error que detiene el espectáculo en 4, tiene una política de salida.

Utilice el último, pero cazar y comprender todas y cada una de las advertencias -Wall da.Para mayor diversión, hay más banderas de advertencia para frotar.Tú hacer Tenga un amplio conjunto de pruebas de regresión (y otras), ejecútelas todas y verifíquelas.

GCC (particularmente C++, pero también C) ha cambiado bastante.Realiza un análisis y una optimización del código mucho mejores y maneja el código que resulta invocar un comportamiento indefinido de manera diferente.Por lo tanto, el código que "funcionó bien" pero que realmente se basó en alguna interpretación particular de construcciones no válidas probablemente se romperá.Es de esperar que el compilador emita una advertencia o un error, pero no hay garantía de que tenga tanta suerte.

Si está interesado en OpenMP, deberá pasar a gcc 4.2 o superior.Estamos usando 4.2.2 en una base de código de alrededor de 5 millones de líneas y no tenemos ningún problema con él.

No puedo decir nada sobre 4.3.2, pero mi computadora portátil es un sistema Gentoo Linux creado con GCC 4.3.{0,1} (dependiendo de cuándo se creó cada paquete) y no he visto ningún problema.Sin embargo, esto es principalmente un uso estándar de escritorio.Si tiene algún código extraño, su kilometraje puede variar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top