後でこれを探している人のために編集してください。現在私が理解しているのは、「該当ファイルやディレクトリがありません」という誤解があるということです。 elfがある場合は、chmod a + xと./programname.elfで実行できます。私のシステムで失敗したのは、おそらくelfに動的にリンクされた実行可能ファイルがあるということです(この場合もそうです)。私が使用しているSDKは動的にリンクされているため、SDKで使用される3rd party関数のソースコードはelfに組み込まれていません。動的にリンクされた実行可能ファイルは実行時に必要なすべてのインクルードを検索し、静的にリンクされた実行可能ファイルはコンパイル時に必要なすべてのコードをバイナリに書き込みます。私の問題に対する解決策は、SDKが自分のプログラムを静的にコンパイルする方法を調べるか、必要な関連機能を含む静的リンクライブラリを作成し、それを使用して、私のターゲットプラットフォームで基本的にプログラムを構築する方法を見つけることです。同じです。プログラム。
bash./program.elfを使用してelfを実行しようとしましたが、「バイナリファイルを実行できませんでした」という応答を受けました。
program.elfファイルを実行すると、次の結果が表示されます。
file.elf: ELF 32-bit LSB executable, ARM, EABI5 version 1(SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, not stripped
uname -aを実行すると
Linux analog 3.19.0-g7f929ec #1 SMP PREEMPT Thu Sep 3 18:06:48 EEST 2015 armv71 armv71 armv71 GNU/Linux
誰もがARMと言いますが、このプログラムはなぜ動作しませんか?
誰かの提案に応じて、ここにreadelf-A ./program.elfがあります。
Attribute Section: aeabi
File Attributes
Tag_CPU_name: "7-A"
Tag_CPU_arch: v7
Tag_CPU_arch_profile: Application
Tag_ARM_ISA_use: Yes
Tag_FP_arch: VFPv3
Tag_Advanced_SIMD_arch: NEONv1
Tag_ABI_PCS_wchar_t: 4
Tag_ABI_FP_rounding: Needed
Tag_ABI_FP_denomal: Needed
Tag_ABI_FP_exceptions: Needed
Tag_ABI_FP_number_model: IEEE 754
Tag_ABI_align_needed: 8-byte
Tag_ABI_enum_size: int
Tag_ABI_HardFP_use: SP and DP
答え1
私が知る限り、ARMv7プロセッサはARMv7-Aモデル(それぞれGalaxy S4およびNexus 5のSnapdragon 600/800およびRaspberry Pi 2/Model Bで使用されるモデル)として一般的に知られていますが、出力はこのチップはARMv71(ARMv7を修正) 1とも呼ばれます)で表されます。プログラムをコンパイル/ビルドするときに、選択したARMv7プロセッサSDKのバリエーションがARMv7-A用にビルドしようとしましたが、代わりにARMv7-M用にビルドした方法と同様に、ARMv7の無効なサブセットである可能性が十分にあるようです。これは、あなたがどのプロセッサ/デバイスを構築しているのか、それともその問題のために構築しているのかわからないためです。ただし、特別にコンパイルされていないプログラムを実行するときに SoC プロセッサがどれほど難しいかを考えると、以下をコンパイルすることをお勧めします。ソースコードは、可能であれば問題のコンピュータに直接あります。
答え2
このコマンドはbash ./program.elf
bash インタプリタを介してファイルを送信します。
elfファイルは、次のようにコマンドラインで実行する必要があるコンパイルされたバイナリです。./program.elf
以下を使用してファイルの実行可能ビットを設定することを忘れないでください。
chmod a+x ./program.elf