重複の可能性:
「そのようなファイルまたはディレクトリはありません」はOptwareがインストールされたバイナリにあります
私は現在、いくつかのハードウェアを組み込みデバイスで動作させることを試みています。ドライバの一部は実行可能ファイルであり、ハードウェアを機能させるために起動する必要があります。しかし、それを実行しようとすると、
bash: no such file or directory
確認したところ、ファイルは間違いなくそこにあり、実行可能ファイルなどです。オンラインで調べたところ、これはファイルがコンパイルされたアーキテクチャと使用しているアーキテクチャの間の問題にも関連している可能性があることがわかりました。しかし、私は何も悪いことを見つけることができません。ここに私が実行した診断のいくつかがあります:
root@desktop:~# /usr/local/eGTouchARMwithX/eGTouchD
bash: /usr/local/eGTouchARMwithX/eGTouchD: No such file or directory
root@desktop:~# ls -l /usr/local/eGTouchARMwithX/eGTouchD
-rwxr-xr-x 1 root root 198870 Jul 19 14:11 /usr/local/eGTouchARMwithX/eGTouchD
root@desktop:~# file /usr/local/eGTouchARMwithX/eGTouchD
/usr/local/eGTouchARMwithX/eGTouchD: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped
root@desktop:~# uname -a
Linux desktop 3.2.0-1415-omap4 #20-Ubuntu SMP PREEMPT Mon Jun 18 19:03:59 UTC 2012 armv7l armv7l armv7l GNU/Linux
root@desktop:~# file /bin/bash
/bin/bash: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, BuildID[sha1]=0x1266f80916e3e59eb001459610510f5d05630297, stripped
root@desktop:~# ldd /usr/local/eGTouchARMwithX/eGTouchD
not a dynamic executable
私が持っている唯一のヒントは、file
がこのファイルを動的にリンクされた実行可能ファイルとして報告するのに対し、ldd
は動的に実行可能ではないと報告することです。
ファイルの何が間違っているのか、これを修正する方法についてのアイデア
アーキテクチャは同じですが、このメッセージは通常、バイナリが外部アーキテクチャ用であることを示していますが、このメッセージの本当の意味は、互換性のないCランタイムライブラリにリンクされていることです。
Linux From Scratchのこのメッセージ Webサイトを参照してください。彼の場合、glibcをアップグレードすると、いくつかの(すべてではない)コマンドでこのエラーが発生しました。
バイナリに一致する適切なCランタイムライブラリをインストールするか、Cランタイムライブラリに一致するバイナリを取得する必要があります。
これは、共有ライブラリ(特にld.so a.k.aダイナミックローダー)を使用する場合のlibcの不一致が原因である可能性があります。glibcボックスで共有uclibcを使用する場合、またはその逆の場合に非常に一般的です。ネイティブの共有ツールチェーンが機能するまで、汎用の静的ツールチェーンを使用することをお勧めします。 http://landley.net/aboriginal には、いくつかのアーキテクチャ用のbootstrapツールチェーンが事前にビルドされています。