web-dev-qa-db-ja.com

実行可能ファイルを実行中:そのようなファイルまたはディレクトリはありません

this repository からダウンロードしたKali Linuxでi686-elf-gccという実行可能ファイルを実行しようとしています。クロスコンパイラです。問題は、ターミナルと私が作成したスクリプトの両方でファイルが存在することを確認できても、実際に実行するときにNo such file or directoryエラーが発生するということです。これを説明する画像は次のとおりです。

enter image description here

また、実行可能ファイルに必要なアクセス許可を与えたと言っておく必要があります。

1
blacklister

通常、「実行できません...そのようなファイルまたはディレクトリはありません」は、実行可能バイナリ自体または必要なライブラリの1つが存在しないことを意味します。ライブラリは、他のライブラリ自体も必要とする場合があります。

指定した実行可能ファイルまたはライブラリに必要なライブラリのリストを表示するには、lddコマンドを使用できます。

_$ ldd /usr/local/bin/i686-elf-gcc
_

結果のリストに次のような行が含まれている場合

_<library name> => not found
_

次に、上記のライブラリがインストールされ、ライブラリ検索パスにあることを確認することで、問題を解決できます。

この場合、ライブラリーは_/usr/local/lib_または_/usr/local/lib64_にある可能性がありますが、何らかの理由でそのディレクトリーがライブラリー検索パスに含まれていません。

追加のライブラリを特定のプログラムまたはセッションでのみ使用できるようにする場合は、LD_LIBRARY_PATH環境変数を使用して、不足しているライブラリを検索する必要のある追加のパスを特定できます。これにより、システムのデフォルトライブラリとの競合の可能性が最小限に抑えられます。

ただし、ライブラリのディレクトリをシステムのデフォルトのライブラリ検索パスに追加する場合は、それを_/etc/ld.so.conf_ファイルに追加するか、選択した_/etc/ld.so.conf.d/*.conf_ファイルを作成して、ルートとしてldconfigコマンドを実行します。ライブラリ検索キャッシュを更新します。

たとえば、不足しているライブラリが_/usr/local/lib64_にあり、_/etc/ld.so.conf.d_ディレクトリが存在する場合、次のように_crosscompiler.conf_ファイルを作成できます。

_# echo "/usr/local/lib64" > /etc/ld.so.conf.d/crosscompiler.conf
# ldconfig
_
4
telcoM