sdb に非常に最小限の chroot 環境を作成し、にマウントしました/mnt/sdb
。へのシンボリックリンクも作成しまし/mnt/sdb/bin/cc
た/usr/bin/gcc
。
ldd /mnt/sdb/bin/cc
戻ってきた
linux-gate.so.1 => (0xb7829000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb76dd000)
/lib/ld-linux.so.2 (0xb782a000)
そこで、次を実行して必要なライブラリをコピーしました。
cp /lib/i686/cmov/libc.so.6 /mnt/sdb/lib/i686/cmov/libc.so.6
cp /lib/ld-linux.so.2 /mnt/sdb/lib/ld-linux.so.2
この記事をざっと見てみるlinux-gate.so.1
と、 はカーネルの一部であるため、コピーする必要がないことがわかりました。
ただし、実行したchroot /mnt/sdb /bin/sh
後、試しcc
てみてください
cc: error while loading shared libraries: libm.so.6: cannot open shared object file: No such file or directory
ldd が cc に必要な libm.so.6 を通知できなかったのはなぜですか? すべてのライブラリを単純にコピーすることなく、chroot 環境で cc を動作させる簡単な方法はありますか? 一時的に cc を使用して、それを使用して tcc をビルドし、それから tcc を使用して他のすべてをビルドできるようにしたいだけです (単純に tcc を外部でビルドしてから chroot で使用することも試みましたが、その価値があるのではないかと心配しています)。自分の投稿)。
ノート:
私は Virtualbox で Debian を使用していますが、chroot 環境で現在実行されている唯一のプログラムは、単一の (静的) ビジーボックス バイナリです。