For building small RAM disks,rootdisks or initrds it's best to use statically-compiled busybox and uClibc. The easiest way is to use the older version of uClibc-0.9.16 since it provides wrappers which allow for compiling using regular gcc. Floating-point math, C99 math, threading, RPC, wide character & large file support and regexp all seem to work. Locale support may work if locale_data files are installed. This is tested with busybox 0.60.x, 1.0.x and 1.2.1 versions and will work, though some features will not. If you use busybox-0.60.5, it has to be configured manually by editing the Config.h file. The file ash.c can also be edited to disable 'ash' features. For more elaborate tiny systems with shared libraries, use later versions of uClibc and the toolchain for it.