News   Magazin   Börse   Links   ArcArchie   Homepages
 Magazin  RISC OS & C-Programmierung 4: Die Verwendung von OSLib Home 
Hardware   Software   Praxis   Sonstiges  
RISC OS & C-Programmierung 4: Die Verwendung von OSLib  Alexander Ausserstorfer 7. 3. 2015

OSLib ist zu finden unter ro-oslib.sourceforge.net. Dort holt man sich unter Download die entsprechende Version für seinen Compiler herunter. Es macht außerdem Sinn, sich die Dokumentation von OSLib als StrongHelp Manual herunterzuladen. Ebenfalls unter Download zu finden.

Die Installation von OSLib wird an dieser Stelle nur an Hand der Version für GCCSDK GCC 4.x using UnixLib (soft-float) beschrieben.

Man benötigt die Datei OSLib-elf-unixlib-softfloat-7/00/zip, zu finden unter dem Link OSLib. Hier wird die aktuelle Version 7.00 (Stand Januar 2015) genutzt. Falls es inzwischen eine neuere Version gibt, sollte natürlich diese genutzt werden. Als nächstes kopiert man aus dem Archiv die drei Dateien beziehungsweise Ordner

  • libOSLib32/a
  • oslib
  • SetVars

HelloWorld Programm dorthin, wo man auch alle anderen Libraries für GCC abgelegt hat. Man kann diese Dateien natürlich auch ins gleiche Verzeichnis kopieren, in dem sich auch GCC befindet. Nur die Übersicht sollte man bewahren.

Wichtig ist, dass man die Datei libOS32/a mitkopiert. Denn bei dieser handelt es sich um die eigentliche Library-Datei. Leider wird einem das in der mitgelieferten Dokumentation von OSLib verschwiegen.

Nach einem Doppelklick auf die Datei SetVars ist OSLib verwendbar. Alternativ kann man SetVars auch in der Bootanwendung starten (!Boot -> Boot -> Run), damit OSLib beim Einschalten des Computers automatisch erkannt wird.

Nun kann man das kurze Beispielprogramm nach dem oberen Bild eingeben, ins Verzeichnis c speichern und in der Kommandozeile nach dem zweiten Bild kompilieren sowie ausführen.

Wie man sieht, hat man, um jetzt aus dem C-Quellcode ein ausführbares Programm zu machen, ziemlich viel einzugeben. Das ist auf die Dauer etwas mühsam. HelloWorld Programm kompilieren

Deshalb macht es Sinn, eine Datei vom Dateityp TaskExec mit den entsprechenden Anweisungen zu erzeugen. Diese Datei kann man nun zum Beispiel unter dem Namen Compiling_HelloWorld_OSLib speichern und mittels einem Doppelklick ganz bequem vom Desktop aus wieder aufrufen. [Anm. cms: Besser ist der Einsatz von make mit dem auch mehr möglich ist.]

Bisher haben wir im Wurzelverzeichnis der SD-Karte gearbeitet. Dies wird auf die Dauer etwas unübersichtlich, da jetzt dort sämtliche Dateien und Ordner von GCC reingeschrieben werden. Aber das lässt sich ändern.

Man erzeugt dazu erst einmal ein Verzeichnis mit einem geeigneten Namen wie zum Beispiel Development im Wurzelverzeichnis. Anschließend verschiebt man sämtliche, bisher erzeugte ELF-Dateien sowie die Verzeichnisse c und o in dieses Verzeichnis hinein. Dazu die betreffenden Dateien und Ordner mit der rechten Maustaste auswählen und anschließend per Drag & Drop mit Hilfe der linken Maustaste bei gleichzeitig gedrückter Shift-Taste ins Fenster von Development verschieben. Nun noch F12 drücken und *Dir $.Development eingeben. Damit verschiebt man die Position des aktuellen Verzeichnispfades nach $.Development. Gibt man jetzt *Cat ein, muss der Inhalt von $.Development angezeigt werden.

Damit dieser Dateipfad dauerhaft eingestellt wird, kann man auch eine Obey-Datei erzeugen, dort *Dir $.Development eingeben, unter einem geeigneten Namen ins Verzeichnis Development ablegen und diese Datei in der Bootanwendung unter !Boot -> Boot -> Run fallen lassen, damit der Befehl beim nächsten Start des Rechners von selbst durchgeführt wird.

Programmierumgebung

[Anm. cms: Für die Entwicklungsumgebung schlage ich einen anderen Weg vor als "Run at startup" zu nutzen. Wie oben beschrieben verschiebt man alles in das Verzeichnis $.Development. Dann erstellt man dort ein Verzeichnis mit Namen Libraries. In diesen Verzeichnis sollen alle Libraries abgelegt werden. Die Libraries für GCC auf riscos.info werden als Anwendungen geliefert und so soll es jetzt auch mit OSLib gemacht werden. Dafür lädt man dieses Archiv herunter, öffnet es und kopiert !OSLib in das Verzeichnis Libraries. Mit der Umschalttaste (Shift) und einen Doppelklick öffnet man dann !OSLib und verschiebt dann die Datei libOSLib32/a und das Verzeichnis oslib in !OSLib. Wie man sieht sind in !OSLib die Obey-Dateien !Boot und !Run vorhanden. !Boot entspricht der Datei SetVars und !Run ruft !Boot auf. Wenn man das Verzeichnis Libraries öffnet, wird das Obey !Boot ausgeführt und damit RISC OS die Position der Library OSLib bekanntgegeben. Später kann man dann weitere Libraries in das Verzeichnis Libraries ablegen und hat damit einen Ordner für die Libraries. Es gibt aber noch zwei Dinge die stören. Um die Libraries dem System bekannt zu machen, muss man das Verzeichnis öffnen und um mit GCC zu arbeiten muss man darauf doppelklicken oder mit "Run at startup" starten. Dafür habe ich die Pseudo-Anwendung BootGCC erstellt. Einfach herunterladen, das Archiv öffnen und !BootGCC in das Verzeichnis $.Development ablegen. Wenn man das Verzeichnis $.Development öffnet, wird GCC "gestartet" und die Libraries werden gesehen. Damit kann man die oben und in den vorherigen Teilen beschriebene Verfahren mit "Run at startup" löschen. Nun kann man nach belieben das Verzeichnis Development verschieben und umbenennen. Bleibt noch die Sache mit dem aktuellen Arbeitsverzeichnis für die Kommandozeile. Unter RISC OS Select und 5 ist das einfach mit dem Filermenüpunkt "Set work directory" beziehungsweise "Set directory" im gewünschten Verzeichnis erledigt. Ein dauerhaftes Setzen des Arbeitsverzeichnisses ist damit nicht notwendig und erlaubt für verschiedene Projekte auch verschiedene Verzeichnisse anzulegen. Innerhalb der Entwicklungsumgebung sollte alles soweit nun funktionieren und so wie im Bild unten aussehen. Es gibt aber noch den Nachteil, dass die Programme nur funktionieren wenn man vorher das Verzeichnis $.Development öffnet. Macht man dies nicht, so wird !SharedLibs nicht gesehen. Das ist aber für den Start der Programme notwendig. Damit !SharedLibs jedes Mal RISC OS bekannt ist, verschiebt man die Pseudoanwendung einfach in das Verzeichnis $.!Boot.Resources. Dazu muss man !Boot in der Wurzel der SD Karte oder Festplatte einfach mit gedrückter Umschalttaste (Shift) Doppelklicken um den Inhalt anzuzeigen und kann nun !SharedLibs nach $.!Boot.Resources kopieren. ]

Alternative Programmierumgebung

 
Weiter geht es im fünften Teil mit der Multitaskingprogrammierung.

Einen Fehler im Artikel gefunden, etwas unklar, Ergänzung oder ein Tipp? Einfach eine Nachricht schicken!

Name: *

EMail:

Text: *
Hardware   Software   Praxis   Sonstiges  
ArcSite   News   Magazin   Börse   Links   ArcArchie   Homepages