Jutussa kerrotaan ainoastaan i386-AROS ohjelmien luonnista x86 Linux:lla ja oletetaan että perus UNIX-komennot ovat tuttuja. Ensin käännetään pieni hello-aros ohjelma ja jälkimmäisenä Zune/MUI ohjelma zune-hello.
Helpoimmalla pääsee kun asentaa ensin i386-linux-system paketin. Sillä voi käyttää AROS ohjelmia x86 Linux:n päällä. Edellä mainittu paketti löytyy AROS:in download osiosta. Asenna paketti johonkin hyvään paikkaan esimerkiksi koti hakemistoon ja testaa että se toimii. Ohjeet aseentamiseen löytyvät AROS:n kotisivuilta suomeksi.
Debian Sargea käyttäessäni ongelmia ilmaantui i386-linux-system:n ja XFree86:n kanssa koska Sarge:n X11:stä ei löytynyt tarvittavia kirjastoja. Olen siirtynyt XOrg:ia käyttävään Ubuntu Dapper:iin, eikä vastaavaa ongelmaa enää ole. Ongelmaan olisi voinut löytyä helppokin ratkaisu, mutta en jaksanut paneutua asiaan sen kummemmin.
Linux:iin pitää olla asennettuna gcc ja binutils, jotka tuottavat i386-elf tiedostoja. Varsinaista kääntäjää siis ei tarvitse edes asentaa, kun kääntö tapahtuu Linux:n natiivilla kääntäjällä script:n avulla. Eli seuraavaksi kun puhutaan AROS-kääntäjästä puhutaan oikeasti scripteistä jotka hoitavat AROS:n hienoudet. Jos haluaa tuottaa esimerkiksi i386-aros binäärejä PowerPC:llä tarvitsee rakentaa PPC:lle ensin x86 ristiinkääntö ympäristö. Ja sitten asentaa AROS-SDK, jolle antaa cross-compiler:n kääntäjäksi.
AROS-Kääntäjään tarvitaan paketti i386-all-sdk AROS:n download osiosta. Kannattaa valita itselleen sopivin paketti. En tiedä onko vaihtoehdoilla mitään eroa. Pura se ja siirry purettuun hakemistoon ja aja asennnus komennolla ./AROS-SDK-Install
.
export
. Itselläni export PATH=/home/minun_kayttaja/aros-sdk/bin/:$PATH
.
Vasta asennettu kääntäjä toimii siis Linux:n puolelta, eikä AROS:sta. Kannattaa muistaa pistää PATH ympäristömuuttuja kuntoon.
Loin hello-aros.c ohjelman, jolla ensin testasin kääntämistä. Käänsin ohjelman Linux:n konsolissa komennolla i386-aros-gcc -o hello-aros hello-aros.c ja siirsin hello-aros ohjelman samaan hakemistoon kuin Linux-host:ed aros. käynnistin AROS:in ja tuplaklikkasin juuri kääntämääni ohjelmaa ja siinä se oli, Hello AROS!! tulostui AROS:n avaamaan ikkunaan.
Yksinkertaisen ohjelman käännön jälkeen tuli mieleeni, että voisin kääntää jotain Amigamaisempaa tavaraa. Voisin vaikka avata jonkin oman ikkunan ja sulkea sen. Päädyin ZUNE/MUI-sovellukseen.
Siitä on kauan aikaa kun olen yhdenkään MUI-ohjelman sorsiin koskenut joten ajattelin etsiä sopivan esimerkin. Sopiva testiohjelma löytyi tietenkin AROS-projektin sivulta ja vieläpä suomennettuna. Zune ohjelmistokehitysopas. Kopioin esimerkkiohjelman sinällään ja koitin kääntää sitä.
Ohjelman kääntö ei tietenkään onnistunut heti käyttäen komentoa i386-aros-gcc zune-test.c -lmui. Seuraavassa listassa olevat asiat korjaavat asian.
...
/*
#ifndef AMIGA_COMILER_H
#include <amiga_compiler.h>
#endif
*/
---
/*
size_t strlcat(char *buf, const char *src, size_t len);
Object *DoSuperNewTagList(struct IClass *cl, Object *obj,void *dummy, struct TagItem *tags);
Object *VARARGS68K DoSuperNewTags(struct IClass *cl, Object *obj, void *dummy, ...);
int VARARGS68K SPrintf(char *buf, const char *fmt, ...);
*/
...
// #include <proto/intuition.h>
// #include <clib/alib_protos.h>
i386-aros-gcc zune-hello.c -o zune-hello -lmui -lintuition
. Skripti on tarkka -l
vipujen paikasta suhteesta sorsa tiedostoon. Ne pitää olla ohjelmakooditiedostojen perässä.
Tietenkin jos tietää tarvitsevansa zune/mui ja intuition kirjastoja koko ajan helpommin käy kun lisää ne muiden joukkoon specs-tiedostoon, joka löytyy i386-aros/lib/gcc-lib/-hakemistosta. Sama pätee muihinkin kirjastoihin.
Erona Amiga-ohjelmointiin on että kirjastojen avaamista ja sulkemista ei tarvitse toteuttaa. Kääntäjien kanssa on aina jonkinlaisia ongelmia ja eroavaisuuksia.
Aina on helpompaa kääntää asiat make
:lla, joten tässä simppeli Makefile. Jos kaikki on ihan ok, niin ohjelmien kääntö käy käskyllä make
, pelkkä hello-aros komennolla make hello-aros
ja pelkkä zune-hello komennolla make zune-hello
. Hakemiston siivous käy komennolla make clean
. Makefile:ssä $^
ottaa edelliseltä riviltä ennen :-merkkiä olevat ja $@
kyseisen merkin jälkeen tulevat sanat.
Mielestäni systeemi toimi hyvin ja kelpaa varmasti ainakin ohjelmien testaukseen. En ole vielä ehtinyt testaamaan tuotosten toimivuutta natiivissa AROS-ympäristössä, mutta uskoisin että se ei muuta asiaa mitenkään.