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.

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.

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
