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/ を元に戻して見るテスト中。

つづく。

まぁ取り合えずsandbox、gccglibcコンパイル成功!よかったよかった!再インスコとならずに。。