Tzn. że napiszesz "a = b;" i wielkość programu wynikowego idzie w setki lub tysiące bajtów.
A czasem w dziesiątki lub setki kilobajtów. Przyczyną jest linkowany do binarki kod startowy, który na wszelki wypadek robi masę rzeczy a na dodatek często dolinkowuje jeszcze funkcję printf (bo "nie ma takiego programu" - oczywiście - "który nie potrzebowałby funkcji printf" :D ), a ta stdio itd.
Jeśli jednak mamy do czynienia z programem - mimo że takie wg tuzów informatyki nie istnieją - który funkcji printf i tego całego badziewia nie potrzebuje, wystarczy podmienić moduł startowy programu. W takim gcc on się nazywa (IIRC, bo dawno nie zaglądałem) bodaj crt0. Jak by się jednak nie nazywał, linker powinien mieć opcję, za pomocą której automatyczne linkowanie tego się wyłącza. Na gcc pod MiNT-em to jest ... zapomniałem, może -nostartup, ale nic sobie nie dam uciąć. Oczywiście pominięcie kodu startowego powoduje, że w większości przypadków przestanie też działać libc, wobec tego nie ma sensu jej linkować (-nostdlib).
Dzięki stosowaniu tego oraz napisanego własnoręcznie w asemblerze kodu startowego o objętości 300 bajtów (zamiast 90k) udało mi się pod MiNT-em spokojnie pisać w C programy, które po zlinkowaniu - statycznym - miały 3-4k.