blob: 59ffd351fffc199b1bd2d3192c042815e8a5c757 [file] [log] [blame]
Introduction
============
This is klibc, what is intended to be a minimalistic libc subset for
use with initramfs. It is deliberately written for small size,
minimal entanglement, and portability, not speed. It is definitely a
work in progress, and a lot of things are still missing.
Building
========
The build procedure is not very polished yet, but it should work like
this:
Extract a recent Linux kernel into a directory and run
"make headers_install".
Now enter the klibc dir and point KLIBCKERNELSRC to the
usr subdirectory of the configured linux tree
"make KLIBCKERNELSRC=`pwd`/../linux/usr/".
It is also possible to install the kernel headers elsewhere and
point to them there.
Cross-compiling
---------------
If you're cross-compiling, you need to set KLIBCARCH to the
appropriate architecture, and set CROSS_COMPILE to your toolchain
prefix.
IMPORTANT: if you're on a 64-bit machine with a 32-bit userland
(ia64, mips64, ppc64 sparc64, s390x or x86_64), and you want to
build the 32-bit version: you need to set KLIBCARCH to the 32-bit
architecture as well as set up the linux/include/asm symlink to
point to the 32-bit architecture. Building the 32-bit architecture
usually (but not always) produces smaller binaries, and is likely
to be better tested.
If you are on ARM, and want to build a thumb version of the library
(this is supported), change OPTFLAGS in arch/arm/MCONFIG to build
thumb code.
Architecture support
====================
The following is the last known status of various architectures:
alpha: Working
arm-thumb: Untested
arm: Working
arm26: Not yet ported
arm64: Working
avr32: Not yet ported
cris: Working
h8300: Not yet ported
i386: Working
ia64: Working static, shared untested
m68k: Working
mips: Working
mips64: Working
parisc: Untested
parisc64: Not yet ported
ppc: Working
ppc64: Working
s390: Working
s390x: Working
sh: Runtime breakage
sh64: Not yet ported
sparc: Working
sparc64: Working
v850: Not yet ported
x86-64: Working
xtensa: Not yet ported
Shared library support requires recent binutils on many architectures.
Note that even the "working" ones likely have bugs. Please report
them if you run into them.
Testing
=======
Try the test programs in the tests/ directory. They should run...
Contact
=======
Contact the klibc mailing list:
https://www.zytor.com/mailman/listinfo/klibc
... for more info.
-hpa