This is klibc, what is intended to be a minimalistic libc subset for
use with initramfs.  It is deliberately written for small size,
minimal entaglement and portability, not speed.  It is definitely a
work in progress, and a lot of things are still missing.


The build procedure is not very polished yet, but it should work like
this:

a) Create a symlink called "linux" pointing to a reasonably recent
   Linux kernel tree (2.4 or 2.5 should be OK.)  This tree must have
   the include/asm symlink set up for the architecture you're
   compiling for, and include/linux/autoconf.h must exist.

b) Create a symlink in the include directory called "bitsize" pointing
   either to the "bits32" or the "bits64" directory, depending on the
   architecture you're compiling for.

c) Change ARCH and OPTFLAGS in the main Makefile to match your
   architecture.  If you're cross-compiling, set CROSS to your
   toolchain prefix.

d) Type "make" and pray...

e) Try the "hello", "minihello" and "testvsnp" programs... they should
   run.

Contact me at <hpa@zytor.com> for more info.

	-hpa
