我在 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 二进制文件。