<pre>
cLIeNUX /subroutine/ABOUT

Practically all of Linux userspace is dynamically linked to GNU Libc. That
is libc.so.5.4.46 in this directory, as of 19991007. Dynamic linking means
that when you run a command like cat, the ELF format header on the cat
executable file has the name of an "interpreter" in it as a text string.
That interpreter in almost every executable binary in cLIeNUX is
/.li/ld.so-linux, which is why that executable is in this directory.  The
kernel runs ld.so-linux, which then loads the actual code the named
program contains, and links that code to routines it needs from libc,
which is probably already in memory. This is a big win on large systems
that all use the same main libraries, as is typical of a unix. For a delay
in startup time and a very slight performance hit, an entire system only
needs one copy in RAM of many widely used routines, such as printf, atoi
and the 1000+ other libc calls, math lib calls, ncurses character-graphics
calls and other library goodies application programmers can't live
without. Not directly pertinent to this directory, but the #!
interpreter-calling mechanism for scripts is a related kernel service. The
.so suffix of unix DLLs means "sharable object archive".

The static subdirectory here is for collections of routines collated for
linking directly to code, i.e. being included in the executable itself.
This is called static linking, and the final product looks the same to the
system and needs no more handling than a stand-alone program written
entirely in machine language. The trade-offs involved mean that static
linking is typically used in only a few cases, such as emergency and
maintenance versions of programs that might need to work without the
dynamic libraries. Static versions of sh, ln and others are real handy for
modifying your libc links, for example. If your sh is static, the box will
boot without libc.so, but may not do much else. The other reason for
static linking is to be completely independant of C, which is worthwhile
when writing a programming language that is very different from C, which
is something I am doing. There's more on static linking in the dir.

The "provides" script in /subroutine lists linkable routines in a
particular library.


Bottom line: 
	Have a known-to-work rescue floppy before messing around in
	here.



Copyright 1999 Rick Hohensee
This file is released for redistribution only as part of an intact entire
cLIeNUX Core.

