0

Windows に Android NDK (r4) の最新バージョンをインストールし、必要なパッケージ、最新の Android SDK、Eclipse + Android プラグインを含む cygwin を新規インストールしました。

cygwin から JNI コードをビルドしようとすると (NDK のサンプルでも、カスタム プロジェクトでも)、次のようになります。

$ make APP=demo
Android NDK: Building for application 'demo'
Compile thumb  : demo_lib <= apps/demo/project/jni/demo.c
cc1: error: /cygdrive/g/David/ndk/build/platforms/android-3/arch-arm/usr/local/i
nclude: not a directory
cc1: error: /cygdrive/g/David/ndk/build/platforms/android-3/arch-arm/usr/include
: not a directory
make: *** [out/apps/demo/armeabi/objs/dmeo_lib/demo.o] Error 1

私の名前は David ではなく、G ドライブを持っていません。

このパスは、何らかの形でこのリリースにハードコードされているようです。g/DavidNDK ディレクトリで文字列を探してみました。多くのバイナリ、一部の.infoファイル、一部のヘッダーのコメント、および 2 つのmkheaders.confファイルに表示されます。

<NDK>\build\prebuilt\windows\arm-eabi-4.2.1\lib\gcc\arm-eabi\4.2.1\install-tools\mkheaders.conf:

SYSTEM_HEADER_DIR="/cygdrive/g/David/ndk/build/platforms/android-3/arch-arm/usr/include"

<NDK>\build\prebuilt\windows\arm-eabi-4.4.0\lib\gcc\arm-eabi\4.4.0\install-tools\mkheaders.conf:

SYSTEM_HEADER_DIR="/cygdrive/g/David/ndk/build/platforms/android-3/arch-arm${sysroot_headers_suffix}/usr/include"

両方のファイルが正しいパスを指すように変更しましたが、(元のパスで) まったく同じエラーが発生します。

cygwin、unix、または make の経験は限られています。何か案は?

4

3 に答える 3

0

Windows XP にも (非アクティブな) G: ドライブがあります (いくつかの USB ドライブが割り当てられています)。これにより、NDK r4 での一部のビルドが妨げられ、エラーが時々表示される理由がわかりませんでした。

とにかく、ここに回避策があります:

  1. 代替 cygdrive パスを準備します。mkdir c:\cygwin\ccc

  2. cygwin を使用mount -c cccして cygdrive パスのプレフィックスを変更する

  3. 不足しているディレクトリを作成します。

mkdir -f /cygdrive/g/David/ndk/build/platforms/android-3/arch-arm/usr/local/include

mkdir -p /cygdrive/g/David/ndk/build/platforms/android-3/arch-arm/usr/include

これで、実行できますandroid-ndk-r4\ndk-build

于 2010-10-27T12:03:26.470 に答える
0

これはおそらく、不完全または破損した NDK インストールの症状です。

gcc バイナリは常に実行可能ファイル内に元の sysroot ディレクトリをハードコードしますが、適切なシステム ヘッダーとライブラリが提供されている場合、これらは通常は見つかりません。そして、彼らはすべきです。

公式サイトから NDK パッケージを再ダウンロードして再解凍し、問題が解決するかどうかを確認していただけますか?

于 2010-05-25T19:10:56.307 に答える
0

私も同じ問題を抱えていました。おそらく、DVDRom または HDD 用の G: ドライブがあるためです (私にとって G: は DVDROM でした)。G: ドライブを非アクティブ化すると問題が解決しました ....

于 2010-06-26T10:43:27.867 に答える