在 LFS 中删除 /tools 时可能出现的问题

在 LFS 中删除 /tools 时可能出现的问题

我最近从头开始制作了一个 Linux,现在我想删除 /tools 目录。但在冲过去之前,我跑了

ldd /bin/* | ldd /bin/* | grep '/工具'

这给了我这个

liblzma.so.5 => /tools/lib/liblzma.so.5 (0x00007fd7e82f9000)
libpthread.so.0 => /tools/lib/libpthread.so.0 (0x00007fd7e7ec3000)
libc.so.6 => /tools/ lib/libc.so.6 (0x00007fd7e7b1f000)
liblzma.so.5 => /tools/lib/liblzma.so.5 (0x00007f2ff2852000)
libpthread.so.0 => /tools/lib/libpthread.so.0 (0x00007f2ff241c000)
libc.so.6 => /tools/lib/libc.so.6 (0x00007f2ff2078000)

然后我手动检查了输出ldd并发现

/bin/kmod: linux-vdso.so.1 (0x00007ffd71dbd000)
liblzma.so.5 => /tools/lib/liblzma.so.5 (0x00007f14721ab000)
libz.so.1 => /lib/libz.so.1 (0x00007f1471f92000)
libpthread.so.0 => /tools/lib/libpthread.so.0 (0x00007f1471d75000)
libc.so.6 => /tools/lib/libc.so.6 (0x00007f14719d1000)
/lib64/ld-linux- x86-64.so.2 (0x00007f14723d0000)

/bin/lsmod:
linux-vdso.so.1 (0x00007ffcc1db7000)
liblzma.so.5 => /tools/lib/liblzma.so.5 (0x00007f3cb7285000)
libz.so.1 => /lib/libz.so.1 (0x00007f3cb706c000)
libpthread.so.0 => /tools/lib/libpthread.so.0 (0x00007f3cb6e4f000)
libc.so.6 => /tools/lib/libc.so.6 (0x00007f3cb6aab000)
/lib64/ld-linux- x86-64.so.2 (0x00007f3cb74aa000)

看起来它只指的是/toolsonly 的情况kmodlsmod 我检查了其他条目,它们都指向正确的条目。例如

/bin/lzcat:
linux-vdso.so.1 (0x00007ffdee0db000)
liblzma.so.5 => /lib/liblzma.so.5 (0x00007ff6cb537000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007ff6cb31a000) )
libc.so.6 => /lib/libc.so.6 (0x00007ff6caf76000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff6cb75c000)

请注意,这里它们都指向/lib.

那么我应该继续吗?

答案1

或许。

输出ldd包含二进制文件将使用的库的名称搜索库搜索路径。如果您有一些指向您的/tools目录的配置(例如,$LD_LIBRARY_PATH或一个ld.so.conf条目),请尝试删除它。如果完成此操作后ldd没有指向您的目录,那么应该没问题。/tools

如果是这样,那么您的二进制文件可能是用一RPATH组编译的。 AnRPATH是存储在编译的二进制文件中的共享库的硬编码位置。它在某些边缘情况下可能很有用,但在您的情况下它绝对没有帮助。如果已设置,则可以使用一个名为的工具chrpath来更改或删除它。

相关内容