MorphOS Amiga
Introducción al SDK de MorphOS con Amiga
Iniciamos la publicación de artículos de divulgación técnica, en este caso de programación para el sistema operativo MorphOS sobre Commodore Amiga. Es una interesante colaboración de Amigatronics con Retro Market Club, puesto que se reproducirán en este medio algunos buenos artículos del desarrollador polaco Grzegorz Kraszewski.
Instalando el SDK (Software Development Kit o Paquete de Desarrollo de Software)
El SDK oficial de MorphOS proporciona un entorno completo para la creación de programas para MorphOS.
Contiene los siguientes componentes:
- Los includes de MorphOS (para la API nativa de MorphOS)
- Includes para C standard y C++
- Documentación para el API de MorphOS y códigos de ejemplo.
- Tres compiladores GCC, 2.95.3, 4.4.5 y 5.3.0
- Conjunto de herramientas GCC (uno para cada compilador), conjunto de utilidades para programadores.
- Lenguajes de script (guión) Perl y Lua.
El primer paso que debemos hacer es descargar el SDK de la página morphos.net, o pulsando directamente este enlace. El SDK está en un archivo Lha, que tendremos que descomprimir antes de poder usarlo. La manera más fácil de hacerlo es usando un menú contextual sobre el archivo (con el botón derecho del ratón en la pantalla de Ambient) y elegir Extract. Después de descomprimirlo veremos que se ha creado un directorio llamado morphossdk y dentro una aplicación de Instalación Installer y un enorme fichero sdk.pack. La instalación comienza ejecutando Installer. La única opción que aquí se necesita por parte del usuario es elegir el directorio donde se va a instalar el SDK. Despues pasaremos un rato observando como avanza la barra de progreso…
Después de la instalación necesitaremos reiniciar el sistema para hacer efectivas las asignaciones y paths necesitados.
En la lista anterior no hay un editor de programación. Scribble es un editor avanzado que está, desde el MorphOS 3.1, incluido en el sistema operativo. Scribble está basado en el conocido componente Scintilla.Cuando se instala el SDK, se añaden características automáticamente, como análisis de código dinámico,indicaciones con los parámetros de las funciones y los miembros de las estructuras, un rápido acceso a la documentación del API del sistema y mucho mas.
Eligiendo un Compilador
Como hemos mencionado anteriormente, con el SDK vienen tres compiladores GCC: el viejo 2.95.3, uno mas moderno 4.4.5, y el mas moderno de todos 5.3.0. Hay una herramienta en el SDK que se llama GCCSelect, que permite cambiar rápidamente entre compiladores. Escribe en una ventana Shell
GCCSelect 2.95.3
o
GCCSelect 4.4.5
o
GCCSelect 5.3.0
para cambiar al compilador que desees. GCCSelect funciona haciendo enlaces simbolicos a la correcta version de GCC y sus herramientas, por lo que el compilador siempre se llamará gcc o g++, sin importar la versión que usemos.
¿Qué versión escoger? Pues depende del código a compilar y sus limitaciones. Tomemos esto como referencia:
- 2.95.3 compila más rápido y consume menos memoria.
- Para código clásico es mejor 2.95.3, pues GCC4 y 5 van aproducir un montón de alertas o incluso errores en código que puede compilar correctamente en 2.95.3.
- Para nuevos proyectos, especialmente en c++, GCC4 es recomendado, pues el viejo gcc2 no cumple con las normativas mas recientes.
- GCC4 generalmente produce código mas rápido (pero a veces será más grande, dependiendo de las opciones del compilador)
- GCC4 es un compilador relativamente nuevo y complejo, puede contener mas errores que 2.95.3.
- En la fecha que se publicó este texto original aún no había salido GCC5 pero ya está disponible para MorphOS. GCC5 es lo mas moderno que actualmente existe, cumpliendo todas las normativas como c++11 y soporte parcial de c++14.
Mi consejo es usar siempre GCC5 y pasar a GCC2 solo si se necesita.
Puedes saber que versión del compilador estas utilizando en cada momento usando la opción -v del compilador, que muestra la versión del compilador:
gcc -v
La última línea muestra la versión de GCC.
Librerías (bibliotecas) C y C++ standard
Estas librerías standard son parte de las especificaciones C y C++. Proporcionan principalmente de funciones de entrada/salida tanto de consola como de ficheros, funciones matemáticas y operaciones con cadenas. La librería C++ proporciona además de un conjunto de clases. Busca en los enlaces adjuntos de Wikipedia.
Hay dos maneras de utilizar estas librerías en MorphOS. La primera (por defecto) es usando una librería compartida de MorphOS, ixemul.library. Como el nombre sugiere, esta librería intenta suministrar un entorno de emulación Unix en MorphOS, la cual, aparte de las librerías standard, incluye gran parte del standard POSIX y otras funciones comunmente usadas. ixemul.library se usa generalmente para portar grandes proyectos del mundo Linux/Unix, por ejemplo es mismamente usado por GCC y muchas otras herramientas del SDK.
La segunda manera es usar libnix (o sea: lib no ixemul). Al contrario que ixemul.library, libnix se enlaza estáticamente con la aplicación. Esta es la forma preferida de acceder a las librerías standard para hacer aplicaciones nativas en MorphOS. Se accede poniendo la opción -noixemul en el compilador y en el enlazador (linker). Libnix suministra librerías completas de C y C++, pero su implementación POSIX en menos completa.
Otra alternativa es no usar las librerías standard. Puede sonar de locos en un principio, pero el API nativo de MorphOS ofrece funciones de entrada/salida para consola y ficheros como manipulación de cadenas y muchas funciones matemáticas. Usando el API nativo se consiguen aplicaciones más rápidas y más pequeñas. Por otra parte usar el API de MorphOS hace que no se pueda portar el código a plataformas no Amigueras. La opción del compilador -nostdlib le dice al compilador que no use ninguna librería standard. Fijate que esto hace que tengas que escribir tu propia secuencia de arranque.
Traducido por Javier R. Santurde para Amigatronics. La licencia de este artículo está en el enlace adjunto.