戻る

前へ| 次へ

bash shell 再 ビルド その2

ldd

必要な Shared Libraries を調べます

# ldd ./bash
        libdl.so.2 => /lib/libdl.so.2 (0x4001e000)
        libc.so.6 => /lib/libc.so.6 (0x40021000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

bash とライブラリのコピー

/dev/ram7 は マウント されているので

# df | sed 2,3d
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/ram7                 3963        13      3950   1% /mnt

bash のコピーをします。

# mkdir /mnt/bin
# cp bash /mnt/bin/
# ls /mnt/bin/
bash*
# ln -s bash /mnt/bin/sh
# ls -l /mnt/bin/ | sed 1d
-rwxr-xr-x    1 root     root       299440 Aug 23 09:22 bash*
lrwxrwxrwx    1 root     root            4 Aug 23 09:22 sh -> bash*

ライブラリ も コピーしていきますが strip の man の抜粋

-o file
strip 処理を行った結果を元のファイルと置き換えるの
ではなく、 file に書き出す。この引数が用いられた場
合には objfile に指定できる引数はひとつだけである。

--strip-unneeded
リロケーション処理に不必要なシンボルを全て削除す
る。
# mkdir /mnt/lib
# ls -a /mnt/lib/
./  ../
# strip --strip-unneeded -o /mnt/lib/libdl.so.2 /lib/libdl.so.2
# strip --strip-unneeded -o /mnt/lib/libc.so.6 /lib/libc.so.6
# strip --strip-unneeded -o /mnt/lib/ld-linux.so.2 /lib/ld-linux.so.2
# ls -l /mnt/lib/ | sed 1d
-rw-r--r--    1 root     root        82604 Aug 23 09:29 ld-linux.so.2
-rw-r--r--    1 root     root      1163260 Aug 23 09:28 libc.so.6
-rw-r--r--    1 root     root         9092 Aug 23 09:28 libdl.so.2

このままでは かなり大きなものになります。

chmod +x

元々の ファイルは全て実行属性が ついていたのですが これが落ちています。 本来全てに つける必要が有るんではないか と考えられるのですが ”Pocket Linux Guide”では ld-linux.so.2 につけるだけにしています。 今回はそれに合わせておきます。

# chmod +x /mnt/lib/ld-linux.so.2
# ls -l /mnt/lib/ | sed 1d
-rwxr-xr-x    1 root     root        82604 Aug 23 09:29 ld-linux.so.2*
-rw-r--r--    1 root     root      1163260 Aug 23 09:28 libc.so.6
-rw-r--r--    1 root     root         9092 Aug 23 09:28 libdl.so.2

にゃんたろう 拝!

2010年 8月23日 (月) 21:02:10 JST 作成


前へ| 次へ

戻る

Copyright © 2006.-2010. nyantarou All Rights Reserved.