[archimedes] Re: [archimedes] Erstes funktionsfähiges RISC OS Modul mit C erstellt und Fragen

  • From: Alexander Ausserstorfer <bavariasound@xxxxxxxxxxxxxxx>
  • To: archimedes@xxxxxxxxxxxxx
  • Date: Mon, 3 Jul 2017 20:23:56 +0200

Am 03.07.2017 um 11:20 schrieb Steffen Huber:

Vorab: auf riscos.info gibt es jetzt eine Wiki-Seite mit Infos über
die Shared Libraries:
http://www.riscos.info/index.php/Shared_libraries

Vielen Dank! Habe ich inzwischen auch schon gefunden. Aber man findet
nicht immer, was man sucht.

Es war mir nicht bewusst, dass bei RISC OS irgendwann die 
!SharedLib-Anwendung eingeführt worden ist 
(!Boot.Resources.!SharedLibs).

Ist schon 'ne Weile her, es gibt aber nicht allzuviele Software die
das Stand heute nutzt - die portierten WebKit-Browser sind die
prominentesten Beispiele.

Wenn ich das richtig verstanden habe, 
handelt es sich dabei um ein ähnliches oder sogar um das selbe Konzept 
wie .dll unter Windows.

Da ich keine Ahnung von den spezifischen Eigenschaften von DLLs habe,
kann ich nur sagen, dass es den Linux-Dynamically-Linked-Libs sehr
ähnlich ist. Es wird ja sogar dasselbe Object-Format verwendet: ELF.

Ist ja wohl auch kein Wunder. Das alles stammt vermutlich genau wie !GCC
(der Compiler) vom GNU-Projekt her, das es sich bereits Anfang der
80iger Jahre zum Ziel gesetzt hat, ein freies Betriebssystem auf dem
Vorbild von UNIX zu erschaffen. Linux ist ja eigentlich nur ein
Betriebssystem-Kern. Warum sollte man hier etwas Neues erfinden und
damit neue Inkompatibilitäten erschaffen? Also wird es übernommen. Aus.

Aus RISC OS-Sicht war es bisher ja so, dass der Module-Mechanismus
verwendet wurde um sowas wie "Shared Libraries" zu bauen. Nachteile:
- es kann zu einem Zeitpunkt im System nur eine Version geben
- Code wird im Supervisor-Modus ausgeführt, hat also dieselben
Privilegien wie das Betriebssystem (!)
- Portierung von Code von anderen Plattformen eher schwierig (siehe
SSL-Drama)

Die Shared-Lib-Implementierung löst alles diese Probleme.

Dafür kannst du diese weder von BASIC noch von Assembler aus so einfach
anspringen. Du bist also _gezwungen_, C zu programmieren. Vorneweg: Ich
hasse C. Ich tue es nur wegen diesen ganzen Bibliotheken, die anders
sonst nicht verfügbar sind.

Es bringt sogar libssl mit. Also eigentlich 
alles schon da. Fragt sich nur, wie man diese Bibliothek jetzt 
anspringen kann, um damit eine verschlüsselte Verbindung aufzubauen. 
Oder liege ich hier ganz falsch? Weiß jemand mehr darüber?

Du kannst die libssl "einfach so" verwenden, wie jede andere
C-Bibliothek auch. Der Unterschied bei den Shared Libs ist wirklich
nur, dass andere Compiler- und Linker-Flags verwenden werden.
Und man muss seine Anwendung dann etwas anders paketieren, damit
die Shared Libs mit dabei sind in der richtigen Version. Ich
glaube, es gibt da vorgefertige Sachen im direkt Pakete für
PackMan zu bauen.

Ich kann libssl nicht so einfach verwenden, weil ich erst einmal die
entsprechenden Header-Dateien usw. für den Compiler !GCC brauche. Und
die sind, wie wir hier inzwischen festgestellt haben, scheinbar
fehlerhaft. Man kann sie runterladen von

http://www.riscos.info/packages/arm/Library/libssl-dev_1.0.2k-3.zip

Das muss ich also auch noch in Ordnung oder zum Laufen bringen, bevor
ich es überhaupt verwenden kann.

Mit sowas darf man sich dann als Anfänger auch noch rumschlagen. Alles
Dinge und Probleme, die beim Arbeiten mit Modulen nicht auftauchen. Dort
sagst du einfach SYS irgendwas mit irgendwelchen Parametern und aus.
Dafür werden diese Parameter aber auch nicht überprüft.

Und wer, wie gesagt, nur in Assembler oder BASIC programmiert oder
programmiert hat, steht wieder außen vor, weil sich libssl gar nicht
einbinden oder nutzen lässt. Das ist auch ganz schlecht für viele,
bereits bestehende Programme. Ich weiß nicht, ob man hierfür irgendeine
"Brücke" programmieren könnte. Damit man es von BASIC oder Assembler aus
halt auch nutzen kann. Alles Dinge, die man bräuchte. Und die sehr
lehrenswert wären oder sind. Aber die niemand macht und über die man
eigentlich auch kaum bis gar nichts liest. Weder in Archive, noch in der
GAG-News, noch im RPI-Geek usw. Schade. Genau das war der Geist der
Achtziger!

Und danke, dass du das einfach so in Anführungszeichen gesetzt hast.

A.

-- 
Der Geist ist die Freiheit.
http://home.chiemgau-net.de/ausserstorfer/

Attachment: signature.asc
Description: OpenPGP digital signature

Other related posts: