Я создал очень минимальную среду chroot на sdb и установил ее на /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?Есть ли простой способ заставить cc работать в среде chrooted без простого копирования всех библиотек?Я просто хотел бы временно использовать cc, чтобы я мог собрать tcc с ним, а затем собрать все остальное с помощью tcc (я также попытался просто создать tcc снаружи, затем использовать его в chroot, но я боюсь, что это может заслужить егособственный пост).
Примечание:
Я использую Debian в Virtualbox, и единственная программа, которая в настоящее время работает в среде chroot, - это один (статический) двоичный файл busybox.