Binary

在 LFS 中刪除 /tools 可能出現的問題

  • March 19, 2016

我最近做了一個 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 的情況下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.

那我應該繼續嗎?

也許。

ldd輸出包含二進製文件在搜尋庫搜尋路徑後將使用的庫名稱。如果您有一些指向您的/tools目錄的配置(例如,$LD_LIBRARY_PATH或一個ld.so.conf條目),請嘗試刪除它。如果在你這樣做之後ldd沒有指向你的/tools目錄,你應該沒問題。

如果是這樣,那麼您的二進製文件可能是使用RPATH集合編譯的。AnRPATH是儲存在已編譯二進製文件中的共享庫的硬編碼位置。它在某些邊緣情況下可能很有用,但在您的情況下,它絕對沒有幫助。如果已設置,則有一個名為的工具chrpath,您可以使用它來更改或刪除它。

引用自:https://unix.stackexchange.com/questions/270866