0

我在 Ubuntu 12.04 中创建了 LFS 7.1,但问题发生在第 6.4 章:进入 Chroot 环境。我执行命令: chroot "$LFS" /tools/bin/env -i \ HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin :/sbin:/usr/sbin:/tools/bin \ /tools/bin/bash --login +h 我没有创建符号链接 /tools 而只是为每个命令使用 /mnt/lfs/tools。在我 ldd bash 之后,我发现它的输出是:

root@ubuntu:/mnt/lfs/tools# ldd ./bin/env
linux-gate.so.1 =>  (0xb7703000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb754c000)
/mnt/lfs/tools/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb7704000)

谁能帮我解决这个问题?

4

1 回答 1

0

我认为这本书没有暗示这个符号链接是可选的......

创建第一个工具链时需要使用该符号链接。只有这样,您才能在主机系统和 chroot 系统中拥有相同的(阅读:文本上相同的)路径。这是必需的,因为在编译工具期间,用于查找其他工具和库(“/tools”)的路径将嵌入到刚刚创建的可执行文件中。(不使用符号链接会导致在可执行文件中嵌入路径“/mnt/lfs/tools”,该路径在 chroot 之后不再存在)。

如果你不想回到第 4.2 章,你可以试试这个:在你的 lfs 系统中创建路径 /mnt/lfs/tools 以指向工具在 chrooted 系统中所在的位置。换句话说,创建另一个符号链接,如下所示(在主机系统中):

ln -s /tools /mnt/lfs/mnt/lfs/tools

(是的,第二个参数读取 /mnt/lfs/mnt/lfs/tools,它包含 /mnt/lfs 两次)。然后继续 6.4 进入 Chroot...

但更好(更干净)的选择是删除第 5 章的结果并返回到 4.2。这次创建符号链接。

于 2012-11-24T11:55:04.203 回答