From: pmacdona@sanjuan (Peter MacDonald) Newsgroups: comp.os.linux Subject: shared libs and building .a's Date: 7 Jun 92 15:00:19 GMT Organization: University of Victoria, Victoria, BC, CANADA Nntp-Posting-Host: sanjuan.uvic.ca I am reposting this, cause I think the last one got lost: There are two ways that I use to build .a's 1) Modify the makefile to add a progname.a target, which is a modification of the progname target, by changing: gcc -O -g -o progname -Ddef1 -Ddef2 ... to ld -r -x -o progname.a ... Ensure that you get rid of the -g, as it wastes much space. 2) Do a make >& make.out and then edit make.out as above, to create a shell script. Now to answer the question: why doesn't linux build the linker into the kernel, and do dynamic linking? - Linus came up with this nifty method that utilizes features of the gnu linker to implement shared libs, that requires virtually no kernel mods. ie. Simple and almost no work required. - Demand loading would be complicated by dynamic linking, because clean pages are currently discarded, and reloaded upon demand, from disk. - Dynamic linking wouldn't solve all problems, because header files (ergo the interfaces) in Linux change frequently, which even with dynamic linking would still require recompilation of applications. - Because no symbol tables are needed, Linux shared images are smaller. So are the shared lib images for the same reason. - Most disadvantages of shared libs would be overcome, if people would post .a's instead of compiled images. ..A's are not hard to build, nor to install on a system with gcc. I don't know how it is for other people with smaller memories, but I have a directory with over 3 Meg in 120 files, and I can relink the whole bunch in less than two minutes. I would like to amass an entire working /usr/bin and post it, broken up into 1.2 Meg chunks. The distribution could be broken up into two groups. The first group would be the base (you could still delete what you don't want), and the second would be a collection of optionals (like X applications, uucp/mail, ka9q, etc). Many people do not would like to use a good Unix OS like Linux, but don't want to dick around for weeks sewing all the pieces together. Peter pmacdona@tadpole.bcsc.gov.bc.ca Some things are missing though like emacs, gdb, mount, and many others.