Spatialite для Android NDK Build

У меня возникли небольшие проблемы с созданием существующего проекта по адресу:

http://code.google.com/p/spatialite-android/

Я использую Win7 и Cygwin

Я получаю исходный код путем клонирования с помощью «GIT для Windows». Поместите его в: C:\temp\ECLIPSE\workspace\SA1

Я загружаю следующее:

Я помещаю их в: C:\temp\ECLIPSE\workspace\SA1\spatialite-android-library\jni

Затем я запускаю Cygwin и делаю следующее:

$ cd c:/temp/eclipse/workspace/sa1/spatialite-android-library/jni
$ tar xvjf geos-3.2.2.tar.bz2
$ cd geos-3.2.2
$ ./configure --build=x86_64-pc-linux-gnu --host=arm-linux-eabi

Вне Cygwin я открываю в редакторе: C:\temp\ECLIPSE\workspace\SA1\spatialite-android-library\jni\geos-3.2.2\source\headers\geos\platform.h и делаю пару изменений, поэтому это похоже на ниже

/* Set to 1 if you have `int64_t' type */
/* #undef HAVE_INT64_T_64 */

/* Set to 1 if `long int' is 64 bits */
/* #undef HAVE_LONG_INT_64 */

/* Set to 1 if `long long int' is 64 bits */
/* #undef HAVE_LONG_LONG_INT_64 */

/* Set to 1 if you have ieeefp.h */
/* #undef HAVE_IEEEFP_H */

/* Has finite */
#define HAVE_FINITE 1

/* Has isfinite */
/* #undef HAVE_ISFINITE */

/* Has isnan */
#define HAVE_ISNAN 1

Сохранить и закрыть

Затем я возвращаюсь к Cygwin и делаю следующее:

$ cd ..
$ tar xvzf proj-4.7.0.tar.gz
$ cd proj-4.7.0
$ ./configure --build=x86_64-pc-linux-gnu --host=arm-linux-eabi
$ cd ..
$ /cygdrive/c/android-ndk-r8/ndk-build

Наряду со строками Compile++ компилируются следующие

StaticLibrary  : libiconv.a
StaticLibrary  : libproj.a

Однако при проверке geos возникает следующая ошибка:

Compile++ thumb  : geos <= TaggedLineSegment.cpp
Compile++ thumb  : geos <= TaggedLinesSimplifier.cpp
Compile++ thumb  : geos <= TaggedLineString.cpp
Compile++ thumb  : geos <= TaggedLineStringSimplifier.cpp
Compile++ thumb  : geos <= TopologyPreservingSimplifier.cpp
Compile++ thumb  : geos <= Assert.cpp
Compile++ thumb  : geos <= GeometricShapeFactory.cpp
Compile++ thumb  : geos <= math.cpp
Compile++ thumb  : geos <= Profiler.cpp
Prebuilt       : libgnustl_static.a <= <NDK>/sources/cxx-stl/gnu-libstdc++/libs/armeabi/
StaticLibrary  : libgeos.a
make: execvp: /cygdrive/c/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-ar: Argument list too long
make: *** [/cygdrive/c/temp/eclipse/workspace/sa1/spatialite-android-library/obj/local/armeabi/libgeos.a] Error 127
HFisher@Toshiba500 /cygdrive/c/temp/eclipse/workspace/sa1/spatialite-android-library/jni
$

Может ли кто-нибудь помочь с тем, как я могу это исправить? Любая помощь очень ценится!


person Hank    schedule 25.06.2012    source источник


Ответы (3)


Похоже, это проблема с NDK. Эта ошибка возникает, когда предоставленный список аргументов слишком длинный. Обычно это можно исправить с помощью файла опций. См. параметр @ для arm-linux-androideabi-ar.

Поиск в Интернете показал, что об этой проблеме сообщили в Google. Единственный обходной путь, который я могу предложить, — использовать виртуальную машину Ubuntu для компиляции собственного кода.

person Frohnzie    schedule 25.06.2012

Проблема решается путем сокращения пути к ndk и папке spaceite-android.

Я переместил ndk в папку c:\cygwin и переименовал его из android-ndk-r8b в ndk. Точно так же я переместил папку android-spatialite в c:\cygwin и переименовал ее в sla.

Затем перейдите в папку /sla/spatialite-android-library/jni и запустите /ndk/ndk-build -j8

И компилируется :)

person jared    schedule 24.10.2012

Попробуйте добавить в make-файлы следующее.

LOCAL_SHORT_COMMANDS := true
person Frohnzie    schedule 30.07.2012