"Hello, world"の共有ライブラリ

Linuxの標準化が進まなかった理由 − @IT

「LSB 3.0までは欠けている機能というのが常にあった。“Hello, World!”を表示するプログラムを書いただけで、LSB 3.0のカバー範囲からはみ出てしまっていた」

がなぜなのか気になったのでいろいろなディストリビューションでhelloworld.cをコンパイルしたときの共有ライブラリがどうなっているかを調べてみました.(KVMは関係ないですね...)

Ubuntu 7.10

$ cat /etc/issue
Ubuntu 7.10 \n \l

$ cat /etc/debian_version
lenny/sid
$ ldd a.out
        linux-gate.so.1 =>  (0xffffe000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e27000)
        /lib/ld-linux.so.2 (0xb7f82000)

Ubuntu 6.06.1 LTS

$ cat /etc/issue
Ubuntu 6.06.1 LTS \n \l

$ cat /etc/debian_version 
testing/unstable
$ ldd a.out 
        linux-gate.so.1 =>  (0xffffe000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e9a000)
        /lib/ld-linux.so.2 (0xb7fd1000)

Fedora 8 (32bit)

$ cat /etc/redhat-release 
Fedora release 8 (Werewolf)
$ ldd a.out 
        linux-gate.so.1 =>  (0x00110000)
        libc.so.6 => /lib/libc.so.6 (0x00af4000)
        /lib/ld-linux.so.2 (0x00ad5000)

Fedora 8 (64bit)

$ cat /etc/redhat-release
Fedora release 8 (Werewolf)
$ ldd a.out
        linux-vdso.so.1 =>  (0x00007fff6dffe000)
        libc.so.6 => /lib64/libc.so.6 (0x00000038ba800000)
        /lib64/ld-linux-x86-64.so.2 (0x00000038b9600000)

Fedora Core 7

$ cat /etc/redhat-release 
Fedora release 7 (Moonshine)
$ ldd a.out 
        linux-gate.so.1 =>  (0xb7f40000)
        libc.so.6 => /lib/libc.so.6 (0x4252f000)
        /lib/ld-linux.so.2 (0x00bd3000)

総括

うーん,確かにlibcのパスは違うけどローダがうまいことやってくれるからバイナリ互換もあるんですけどねぇ.LSBの場合はそういう問題ではないんでしょうか?linux-gateとlinux-vdsoは違うみたいですが...