sandboxまわり(gccとかglibc)がコンパイル出来ない問題 つづき 解決
つづき。
どうもよくわからないので、とりあえずstage3を落としてみる。
↓これ
ftp://rsync4.jp.gentoo.org/GENTOO/releases/amd64/2008.0/stages/stage3-amd64-2008.0.tar.bz2
で、chrootで入って32bitsなバイナリを起動できるかテスト。
- コマンド
$su
#cd
#pwd
#/root
#wget ftp://rsync4.jp.gentoo.org/GENTOO/releases/amd64/2008.0/stages/stage3-amd64-2008.0.tar.bz2
#mkdir stage3
#mount -t proc none ./stage3/proc
#mount /dev ./stage6/dev -o bind
#chroot /root/stage6/ /bin/bash
#./a.out
Hello World
#exit
おっ、実行できた!
じゃあ、stageから関係ありそうな部分コピーすれば動くのでは?と思い、以下のファイルをコピー(全部バックアップ取りながらコピってます。)
/lib32
/usr/lib32
- コマンド
#pwd
#/root/stage3
#cp -Rap ./lib32/* /lib32
#../a.out
だめ
#cp -Rap ./lib32/* /usr/lib32/
#../a.out
だめ
あれ?検索してみる。
#find -iname "*32*"
hogehoge
/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/32
hogehoge
それっぽいのが出てくる早速コピー
#cp -Rap ./usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/32/* /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/32
#../a.out
だめ
どうしたらいいのかなー。うーん、まずはLinuxバイナリの動作手順を知ろうと思い。下のサイトを見る。
ttp://blog.goo.ne.jp/xmldtp/e/ac59291370eecf5c3a08f3ae85c8cacf
あぁ、やっぱり/libも必用なのかなと思い。コピー
#cp -Rap ./lib/* /lib/
#../a.out
Hello world
#
起動した!
とりあえず、どれが影響していたのかを調べるため、/usr/lib32 /lib32 /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/32/ を元に戻して見るテスト中。
つづく。