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 MiNTDas 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:
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("hello world\n");
}
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