Software > Coding
Neues Projekt auf AtariForge: libcmini
mfro:
Hallo allerseits,
wir hatten die Diskussion hier ja schon mal: die GNU cross compiler und die Programmgröße.
Die mintlib unterstützt (weitgehend) POSIX und andere Standards. Leider führt das dazu, daß Programme, die mit ihr gelinkt werden, riesige Binaries ergeben. Das hat zu dem (falschen) Gerücht geführt, die gcc-Compiler würden unnötig große Programme erzeugen. Der gcc-Compiler kann aber gar nichts dafür (tatsächlich kann er sogar sehr kompakten Code erzeugen), es ist die mintlib, die diese Programmgrößen bedingt. Ich will sie nicht schlecht machen, schließlich erlaubt sie durch ihre Standards-Konformität einfaches Portieren von UNIX/Linux Quellen auf den Atari und hat deshalb sehr wohl in dieser Form eine Berechtigung.
Viele, direkt für den Atari geschriebene Programme brauchen diese Standards-Konformität aber nicht. Solche Programme sollten eher klein und leichtgewichtig sein, damit man sie auch auf den "kleinen" Ataris sinnvoll nutzen kann.
Dafür habe ich dieses Projekt auf AtariForge ins Leben gerufen: libcmini, die kleine und simple C-Library für gcc Compiler für TOS und MiNT
Das Ding ist bei weitem nicht komplett, viele Sachen sind gar nicht, andere (zu) simpel oder vielleicht sogar falsch implementiert, aber manches kann man schon benutzen und die Ergebnisse zeigen, daß der Ansatz funktioniert:
Ein einfaches "Hello World"-Programm:
--- Code: ---#include <stdio.h>
int main(int argc, char *argv[])
{
printf("hello world\n");
}
--- Ende Code ---
Compiliert mit -Os, für 68000, gestrippt:
mintlib: 118225 bytes
libcmini: 2281 bytes
Beide Programme tun genau dasselbe. Ziel ist, daß die Library mal ungefähr den Funktionsumfang bekommt, den man von Pure C kennt.
Libcmini kann für alle vom gcc-Compiler unterstützten Targets (m68000, m68020-60, m5475 und die dazugehörigen -mshort-Varianten) compiliert werden und unterstützt das "multilib"-Konzept von gcc (Programme werden abhängig von den Compiler-Optionen "automatisch" zur richtigen Library gelinkt. Die beiliegenden Makefiles zeigen, wie das geht.
Mit dabei ist ein (relativ simples, aber lauffähiges) Beispiel-Programm, das zeigt, daß das Konzept auch für komplexere Programme taugt. Eine GEM-Applikation mit Fenstern und Dialogboxen in weniger als 15k (das mit der mintlib gelinkte Gegenstück hat 180k), per make automatisch in einem Durchgang compiliert für alle Atari-Plattformen (auch m5475 und m5475/mshort - hoffentlich trägt das zur Verfügbarkeit von mehr nativen Firebee-Programmen bei).
Weil die Library noch nicht mal ansatzweise "fertig" und noch viel zu tun ist, werden Mitstreiter gesucht. Bitte meldet Euch auf AtariForge an, falls Ihr helfen wollt.
(Konstruktives) Feedback ist ebenso gern gesehen.
Gruß,
Markus
simonsunnyboy:
Klasse Idee, das werde ich sicherlich verfolgen und irgendwann mal ausprobieren!
Arthur:
Könnte man dann Mint auch mit der kleinen Lib übersetzen so das es auf den STs besser läuft? Eine andere Frage wär noch ob es beim Kompilieren keine Option gibt die verhndert das wegen dem Posixkram die Kompilate so groß werden mit der Mintlib.... Kann nur ein wenig Basic... aber interessieren würds mich schon.
mfro:
--- Zitat von: Arthur am Mi 26.06.2013, 19:19:40 ---Könnte man dann Mint auch mit der kleinen Lib übersetzen so das es auf den STs besser läuft? Eine andere Frage wär noch ob es beim Kompilieren keine Option gibt die verhndert das wegen dem Posixkram die Kompilate so groß werden mit der Mintlib.... Kann nur ein wenig Basic... aber interessieren würds mich schon.
--- Ende Zitat ---
MiNT benutzt die mintlib selbst nicht und ist weitgehend "so klein wie möglich". Es ist eben ein komplettes 32-Bit Multitasking-Betriebssystem mit vielen Features, das ist nicht viel kleiner zu bekommen, ohne Funktionalität wegzulassen ("kein Fett - nur Muskeln" ;) ). Man kann höchstens eine der frühen Versionen (MultiTOS, so wie es mit dem Falcon ausgeliefert wurde, z.B.) einsetzen - die waren deutlich kleiner, konnten aber auch deutlich weniger.
Die mintlib ist natürlich nicht nur wegen des "Posix-Krams" so groß. Sie implementiert (fast) alles, was zu einer modernen, standard-konformen C-Library gehört. Das wird die libcmini nie können.
Braucht sie aber auch nicht. Die meisten einfacheren GEM-Programme kommen mit weniger als zwanzig Standard-Library-Funktionen aus, viele brauchen noch nicht mal eine Hand voll.
Lukas Frank:
--- Zitat von: Arthur am Mi 26.06.2013, 19:19:40 ---Könnte man dann Mint auch mit der kleinen Lib übersetzen so das es auf den STs besser läuft?
--- Ende Zitat ---
Der MiNT Kernel ist ja nur etwas über 300kB groß ...
Die Funktionalität macht es halt Speicherhungrig ...
Ich hatte früher oft Knarfmint auf einem Atari Mega ST mit Riebl Netzwerkkarte laufen und ich kann sagen das man damit
kaum arbeiten kann weil viel, viel zu langsam ...
https://www.knarf.de/MiNT.html
Außerdem sind viele Programme und auch Teile vom MiNT nur als 020er Binaries vorhanden ...
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln