Android NDK продолжает искать "г / Дэвид / ..." - PullRequest
0 голосов
/ 25 мая 2010

Я установил последнюю версию Android NDK (r4) в Windows, а также свежую установку cygwin с необходимыми пакетами, последние версии Android SDK, Eclipse + плагины для Android.

Всякий раз, когда я пытаюсь построить какой-либо код JNI из cygwin (будь то образцы из 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

Меня зовут не Дэвид, и у меня нет диска G.

Похоже, этот путь как-то жестко запрограммирован в этом выпуске. Я попытался найти строку g/David в каталоге NDK. Он появляется во многих двоичных файлах, некоторых .info файлах, как комментарий в некоторых заголовках и в двух 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. Есть идеи?

Ответы [ 3 ]

0 голосов
/ 26 июня 2010

У меня была такая же проблема. Это потому, что, возможно, у вас есть диск G: для DVDRom или HDD (для меня G: был DVDROM). Проблема решена, когда я деактивировал диск G: ....

0 голосов
/ 27 октября 2010

У меня также есть (неактивный) диск G: в Windows XP (для него назначен 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

0 голосов
/ 25 мая 2010

Вероятно, это признак неполной / сломанной установки NDK.

Двоичные файлы gcc всегда жестко кодируют исходный каталог sysroot в своем исполняемом файле, но они обычно не обнаруживаются, если соответствующие системные заголовки и библиотеки предоставлены иначе. И они должны.

Можете ли вы попробовать повторно загрузить и разархивировать пакет NDK с официального сайта и посмотреть, решит ли это проблему?

...