
libで始まるすべてのファイルを/../から次のフォルダに移動しました。
mv /../lib* /to/some/folder
その後は元に戻すことはできません。
-bash: /bin/mv: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
ls
それは-bash: /bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
答え1
復元はインストールbusybox
したとおりに機能しましたbusybox
。
busybox
は静的にリンクされたバイナリであり、これはあなたのケースでは役立ちましたが、この種の欠陥を修復するために静的にリンクされたバイナリを使用する必要はありません。
次のようにすることもできます:
LD_LIBRARY_PATH=/some/path/where/the/libs/are mv ....
動的ランタイム リンカーも移動した場合は、ランタイム リンカーも手動で呼び出す必要があります。これがどのように機能するかを理解するには、次を呼び出します。
man ld.so.1
またはLinuxの場合
man ld.so
通常、次のようなコマンド ラインが生成されます。
LD_LIBRARY_PATH=/path/to/libs /path/to/libs/ld.so.1 mv ....
Linux では、またはシステムで実際に使用されているものに/path/to/libs/ld.so.1
置き換えます。/path/to/libs/ld-linux-x86-64.so.2
一般的に、呼び出したいバイナリが 32 ビット バイナリか 64 ビット バイナリかを把握し、適切な動的ランタイム リンカーを呼び出す必要があります。
ところで、これは 2004 年以降 Solaris で文書化されている方法であり、その年以降、Solaris には静的にリンクされたバイナリは存在しません。