Antes de empezar... hay alguien en la sala que no sepa que es GCC? ....... como veo alguna mano levantada, un poco de introducción:
GCC siginfica GNU Compiler Collection, o lo que es lo mismo, el conjunto de compiladores de código abierto (gratis!). GCC es ampliamente utilizado en montones de entornos y lenguajes (C, C++, Java...). Es un producto realmente sólido y imprescindible si queremos generar nuestros programas para la Sega Dreamcast.
Bien, ¿y a qué viene el título? Fácil. Tradicionalmente, se ha utilizado la versión 3 de GCC, ya que lleva muchos años en este mundillo, y ofrece unos buenos resultados. Pero amigos, en la informática todo se moderniza, y GCC se actualizó a la versión 4, con importantes novedades.
Hasta ahora el tema de GCC4, para generar binarios de Dreamcast estaba un poco verde. En los últimos meses, KOS (el SO libre de Dreamcast) se ha ido actualizando incorporando herramientas para generar nuestra toolchain con GCC4. Nuestros experimentos han sido satisfactorios, así que la pregunta típica es ... voy a la última, o conservo a lo más estable?
En mi opinión, recomendaría hacer el esfuerzo a
GCC4. Aunque no ofrezca mejoras radicales, creo que es bueno ir actualizando el software. Es una excusa perfecta para revisar esos antiguos ports abandonados :-P
¿Cómo elegir la versión de vuestra toolchain?
Si os fijáis en la carpeta
utils/dc-chain/patches, encontraréis las distintas versiones que podemos compilar. Yo os presento dos configuraciones:
Configuración conservadora: GCC 3.4.6 - Newlib 1.12.0 - Binutils 2.17
Configuración agresiva: GCC 4.5.2 - Newlib 1.19.0 - Binutils 2.21
Evidentemente, podéis jugar a ser dioses y combinar las versiones.... aunque yo no lo haría. Hay restricciones entre versiones de GCC y Newlib, por ejemplo.
Para elegir versión, tenéis que abrir el fichero
Makefile de kos/utils/dc-chain/ y modificar estos campos:
binutils_ver=2.21
gcc_ver=4.5.2
newlib_ver=1.19.0
A la vez, también deberéis de cambiar la versión en los ficheros
download.sh y
unpack.sh
¿Alguna duda? Aquí estamos para responder :)