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

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

i686-elf-gccKali Linuxからダウンロードした実行ファイルを実行しようとしています。このリポジトリ。クロスコンパイラです。問題は、私が書いたスクリプトと端末の両方にファイルが存在することがわかりますが、実際に実行すると No such file or directoryエラーが発生することです。これを説明するイメージは次のとおりです。

ここに画像の説明を入力してください。

また、実行ファイルに必要な権限を付与したと申し上げたいと思います。

答え1

通常、「実行できません...そのファイルやディレクトリはありません」とは、実行可能なバイナリ自体を意味します。または必要なライブラリの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目的のファイルを作成してldconfigrootとしてコマンドを実行してライブラリ検索キャッシュを更新する必要があります。

たとえば、見つからないライブラリがそこにあり、ディレクトリが存在する場合は、次の/usr/local/lib64ファイルを/etc/ld.so.conf.d作成する必要があります。crosscompiler.conf

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

関連情報