2

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 環境で現在実行されている唯一のプログラムは、単一の (静的) ビジーボックス バイナリです。

4

0 に答える 0