在 LFS 中刪除 /tools 可能出現的問題
我最近做了一個 Linux From Scratch,現在我想刪除 /tools 目錄。但在衝過去之前,我跑了
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)
看起來它只是指
/tools
在 only 的情況下kmod
,lsmod
我檢查了其他條目,它們都指向正確的條目。例如/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
.那我應該繼續嗎?
也許。
ldd
輸出包含二進製文件在搜尋庫搜尋路徑後將使用的庫的名稱。如果您有一些指向您的/tools
目錄的配置(例如,$LD_LIBRARY_PATH
或一個ld.so.conf
條目),請嘗試刪除它。如果在你這樣做之後ldd
沒有指向你的/tools
目錄,你應該沒問題。如果是這樣,那麼您的二進製文件可能是使用
RPATH
集合編譯的。AnRPATH
是儲存在已編譯二進製文件中的共享庫的硬編碼位置。它在某些邊緣情況下可能很有用,但在您的情況下,它絕對沒有幫助。如果已設置,則有一個名為的工具chrpath
,您可以使用它來更改或刪除它。