ターミナルコマンドが機能しない

ターミナルコマンドが機能しない

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 には静的にリンクされたバイナリは存在しません。

関連情報