AOSP 5.1.1(Nexus 7 - Grouper)で特別にROMをビルドしようとしています。ところが先ほどカーネルをビルドしてこの部分で詰まっていました。
次のコマンドはうまく機能します。make tegra3_android_defconfig
作成時に問題が始まります。make -j4
衝突が発生し、次のように言います。
Fahads-MBP:tegra Fahad$ make -j4 /volumes/untitled/tegra/../WORKING_DIRECTORY/prebuilds/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-gcc:/volumes/untitled/tegra/../WORKING_DIRECTORY/prebuilds/ gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-gcc: バイナリを実行できません。 CHKを含む/linux/version.h CHKを含む/生成/utsrelease.h UPDを含む/生成/utsrelease.h HOSTCCスクリプト/基本/fixdep include/generated/mach-types.hの生成 CCコア/バウンド /bin/sh: /volumes/untitled/tegra/../WORKING_DIRECTORY/prebuilds/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-gcc: バイナリファイルを実行できません。 make[1]: *** [カーネル/バウンド.s] エラー 126 make: *** [prepare0] エラー 2 #### makeがいくつかのターゲットを構築できませんでした(2秒)####
私はコマンドを実行しました
chmod 777 ARM-eabi-gcc
そして
chmod +x arm-eabi-gcc
しかし、まだ動作していません。同じバイナリエラーを実行できません。どんな提案がありますか?
答え1
「バイナリを実行できません」は権限に関連していないのでchmod
役に立ちません。
(ああ、絶対に使用しないでくださいchmod 777
。これは決して解決策ではありません。何かをしようとしていますが、エラーが「Permission Denied」の場合は、実行権限を追加してください。chmod a+x
)
このメッセージは、カーネルが有効なプログラム形式で認識されないバイナリファイル(スクリプトではない)があることを意味します。ディレクトリ名によると、linux-x86
これはx86実行可能ファイルです。
ヒントを見ると、ARMタブレット自体からカーネルを構築したいようです。 ARMプロセッサではx86実行可能ファイルを実行できません。 Androidツリーには存在しないARM用のコンパイラバイナリが必要です。最も簡単な解決策は、PCで構築することです。本当にタブレットでビルドしたい場合は、適切なコンパイラバイナリを入手してください(正しいlibcの場合、ARMプラットフォームにはさまざまなABIがあるため、正しいABIを識別するのは少し難しいかもしれません)。