Like any great systems programming language, it doesn’t take much of anything to get C up and running on a new platform.
In fact, a minimal C “runtime” (typically called
crt0
) only consists of a short prelude
that zeroes out the .bss
section and hands off execution to main
.
That’s it!
Compared to other popular programming languages, which require substantial runtime machinery to operate (e.g: Java’s virtual machine, Go’s garbage collector, etc…), C’s extremely minimal approach to language design has allowed it to run on just about any platform.
Unfortunately, while C is effectively dependency free at the language level, the same can’t be said about its standard library.