Использование ldd для chroot - PullRequest
       17

Использование ldd для chroot

2 голосов
/ 17 февраля 2012

Я создал очень минимальную среду 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.

...