存在するのに、なぜ「見つかりません」と表示されますか? [コピー]

存在するのに、なぜ「見つかりません」と表示されますか? [コピー]

重複の可能性:
Optwareがインストールされているバイナリに、「該当するファイルやディレクトリはありません」と表示されます。

小さなルーターボックスにebtablesを追加しようとしています。行き、正しいアーキテクチャに合わせてコンパイルされたバイナリをインポートし、ここに入れました/sbin/。これにより、/sbin/ebtablesシェルは次のように言いますが、これは/bin/sh: /sbin/ebtables: not found完璧ls -l /sbin/ebtablesに表示されます。

-rwxr-xr-x    1 admin    admin        4808 Aug  4 10:36 /sbin/ebtables

ここで何が起こっているのかというアイデアはありますか?

答え1

依存関係が欠落している可能性があります。ELFヘッダーに設定されたランタイムリンカ(「プログラムインタプリタ」)がシステムに存在しない場合、このタイプのメッセージを受け取ることに注意する価値があります。

これを確認するには:

readelf -l your_executable|grep "program interpreter"

それが提供するものがシステムに存在しない場合、または依存関係が欠落している場合(確認ldd)、奇妙なエラーメッセージが表示されます。

デモ:

$ gcc -o test t.c
$ readelf -l test|grep "program interpreter"
      [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
$ ./test
hello!

$ gcc -Wl,--dynamic-linker -Wl,/i/dont/exist.so -o test t.c
$ readelf -l test|grep "program interpreter"
      [Requesting program interpreter: /i/dont/exist.so]
$ ./test
bash: ./test: No such file or directory

答え2

あなたはそれを実行しますかroot? IIRC 一部の bash 実装は実行を拒否します。何もない/sbin/usr/sbinそうでない場合root

私が見つけたこの記事説明を探しています(OpenSUSEについて話しても関係ないかもしれません)。

関連情報