Re: Where the code goes?

Adam Sulmicki (adam@cfar.umd.edu)
Mon, 20 Sep 1999 05:32:11 -0400


=?ISO-8859-1?Q?=14Tonglu?= yi writes:
->I found that the linux kernel source code is about 60MB, but when I
->compiling into into binary, making it into kernel image, the image is
->only about 0.6MB. I don't know how it is so? Does all of the 60MB source
->code become the 0.6 binary code? Why?

Because linux uses ultra-secret 100% compression invisible patented
algorithm to compress its kernels. <joking>

Seriously,
Let see, I assume you compiled it on PC style machine, but this is not
the only architecture which linux support. checking the architecture
directory shows that a chunk of code is used by other platforms like
Alpah or Sun.. those won't go into the kernel you compiled.

eax:/usr/src/Linux/23/linux# du -sh arch/*
711K arch/alpha
817K arch/arm
979K arch/i386
2.0M arch/m68k
920K arch/mips
1.5M arch/ppc
164K arch/sh
1.2M arch/sparc
1.2M arch/sparc64

Furthermore there are tons of drivers, for PC's and other arechitecture,
I doubt you compiled them all. As you can see they account for around 50%
of sources.

eax:/usr/src/Linux/23/linux# du -sh drivers
35M drivers

The image itself is compressed (not as 100% as I suggested above
but still),

[adam@pepsi HOWTO]$ du -sh /boot/vmlinux-2.3.18ac5 /lib/modules/2.3.18ac4/ /boot/vmlinuz-2.3.18ac5
2.5M /boot/vmlinux-2.3.18ac5
1.3M /lib/modules/2.3.18ac4 < uncompressed kernel
982k /boot/vmlinuz-2.3.18ac5 < compressed kernel

so the end binary size is : around 4 mb.

In the end machine executable code always will be more compact that human
readable code (at very least b/c lack of comments). for small programs
binary is bigger becuase of overhead of starup code, but once source code
gets big, the proportions reverse.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/