最近最初から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 lib/libc.so.6 (0x00007fd7e7b1f000)
liblzma.so.5 => /tools/lib/liblzma.so.5 (0x00007f2ff2852000)
libpthread.so.0 => /tools/lib/libpth000
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 (
0x000007 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 (
0x000006 x86-64.so.2(0x00007f3cb74aa000)
/tools
唯一のケースだけを参照しているようですkmod
。lsmod
他の項目を確認しましたが、すべて正しい項目を指しています。例えば
/bin/lzcat:
linux-vdso.so.1 (0x00007ffdee0db000)
liblzma.so.5 => /lib/liblzma.so.5 (0x00007ff6cb537000)
libpthread.so.0 => /lib/libpthread.c000 ) )
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
にコンパイルされたでしょう。 Anは、RPATH
コンパイルされたバイナリに格納されている共有ライブラリのハードコードされた場所です。いくつかの極端なケースでは役に立つかもしれませんが、あなたの場合は間違いなく役に立ちません。設定されている場合というツールを使用してchrpath
変更または削除できます。