Note that the kernel export functions aren't mean to to be a library.
If a user program needs the functionality of "strnlen()", it shouldn't
try to get it from the kernel. Similarly, if a kernel module needs
strnlen(), it should link it in itself, not try to get it from the
kernel.
The kernel exports only _kernel_ specific functions that a module can't
handle itself. You wouldn't expect the kernel to export "memset()",
would you? There's nothing "kernelish" about either routine.
Kernel modules that need library-type functions should link against the
kernel library, because that's what it's for. The kernel _itself_
shouldn't be considered a library.
I guess that the link stage for modules should add "LIBS" to the link
line (LIBS is created by the top-level kernel Makefile, and may contain
architecture-specific libraries).
Linus