i686-elf-gcc
Kali 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
目的のファイルを作成してldconfig
rootとしてコマンドを実行してライブラリ検索キャッシュを更新する必要があります。
たとえば、見つからないライブラリがそこにあり、ディレクトリが存在する場合は、次の/usr/local/lib64
ファイルを/etc/ld.so.conf.d
作成する必要があります。crosscompiler.conf
# echo "/usr/local/lib64" > /etc/ld.so.conf.d/crosscompiler.conf
# ldconfig