2008-08-28 12 views
6

El grupo de productos para el que trabajo actualmente utiliza 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 los beneficios de rendimiento probando diferentes versiones de gcc 4.x en todas las plataformas de hardware en las que lo probamos. Sin embargo, tenemos muy asustado de errores del compilador c (por una buena razón históricamente), y nos preguntamos si alguien tiene una idea de a qué versión deberíamos actualizar.¿Qué versión 4.x de gcc debería uno usar?

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

Respuesta

4

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

GCC 4.3 también tiene un mejor soporte para optimizaciones en nuevas CPU.

1

No tengo una versión específica para usted, pero ¿por qué no tener un 4.X y 3.4.6 instalados? Entonces podría tratar de mantener el código compilando en ambas versiones, y si se encuentra con un error de show-stopping en 4, tiene una política de salida.

0

Si está interesado en OpenMP, tendrá que pasar a gcc 4.2 o superior. Estamos utilizando 4.2.2 en una base de código de alrededor de 5 millones de líneas y no estamos teniendo ningún problema.

4

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

0

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

1

Utilice la última, pero busque y entienda todas y cada una de las advertencias -Wall da. Para mayor diversión, hay más banderas de advertencia para frob. Usted haga tenga un conjunto extenso de pruebas de regresión (y otras), ejecútelas todas y compruébelas.

GCC (particularmente C++, pero también C) ha cambiado bastante. Mejora mucho el análisis y la optimización de los códigos, y maneja el código que resulta ser diferente para los bahaviiour. Entonces, el código que "funcionó bien" pero realmente se basó en alguna interpretación particular de construcciones inválidas probablemente se romperá. Esperemos que el compilador emita una advertencia o error, pero no hay garantía de tal suerte.

Cuestiones relacionadas