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?有没有一种简单的方法可以让 cc 在 chrooted 环境中工作而无需简单地复制所有库?我只是想暂时使用 cc 以便我可以用它构建 tcc,然后用 tcc 构建其他所有东西(我也尝试过简单地在外部构建 tcc 然后在 chroot 中使用它,但我担心这可能值得它自己的帖子)。

笔记:

我在 Virtualbox 中使用 Debian,目前在 chroot 环境中运行的唯一程序是单个(静态)busybox 二进制文件。

4

0 回答 0