- crt0 to standardowy kod który jest potrzebny do wystartowania programu. Każdy kompilator to ma. Jak piszesz program w asmie to też jest rutynowy startup (mshrink() i inne cuda). Wikipedia mówi to: http://en.wikipedia.org/wiki/Crt0
- mintlib to biblioteka standardowa FreeMinta, która ma funkcje/interfejsy podobne do unixowych i dzięki temu można robić porty różnych narzędzi i w ogóle używać unixowych programów na FreeMiNcie (przynajmniej ja to tak rozumiem). To jest teżtaki pośrednik między użytkownikiem, a systemem operacyjnym. Tam są też wszystkie nagłówki i dzięki temu jest dostęp do funkcji systemowych Atari (BIOS/XBIOS etc.)
- to przez samo gcc (to nie jest kwestia platformy docelowej tj. binarki są tak duże, że odpalanie ich na ST pożera dosyć sporo zasobów pamięciowych, na falconach z 14mb albo tt ramem ten problem jest nie istotny), w starszych wersjach np. gcc 2.95 ten problem nie występował, w nowszych wersjach sprawa się pogorszyła (nie jestem ekspertem, więc nie wiem dokładnie dlaczego tak się stało). Ale to nie jest problem tylko na naszej platformie. Tak na pierwszy rzut oka wygląda na to, że zawsze dołączana jest standardowa biblioteka i masa różnych symboli, wbudowanych funkcji itp. (gazylion rzeczy) i binarka nawet z głupim 'Helloł world' dużo waży. Jak zajrzysz do przykładów i zobaczysz mapę symboli to się przekonasz o czym mowa.
GCC w tej chwili jako jeden z niewielu obsługuje standard C C99, który wg mnie jest wygodniejszy niż ten stary skostniały ANSI C i z tego co wiem żaden z natywnych kompilatorów (no może z wyjątkiem VBCC, AHCC trudno mi powiedzieć, bo się nie zagłębiałem) go nie obsługuje. To głównie dlatego go używam.