Question

I am having a little trouble with build an existing project at:

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

I am using Win7 and Cygwin

I get the source code by cloning using "GIT for Windows". Placing it into: C:\temp\ECLIPSE\workspace\SA1

I download the following:

I place these in: C:\temp\ECLIPSE\workspace\SA1\spatialite-android-library\jni

I then start Cygwin and do the following:

$ 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

Outside of Cygwin, I open in an editor: C:\temp\ECLIPSE\workspace\SA1\spatialite-android-library\jni\geos-3.2.2\source\headers\geos\platform.h and make couple of changes so it resembles below

/* 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

Save and close

I then go back to Cygwin and do the following:

$ 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

Along with the Compile++ lines the following compiles

StaticLibrary  : libiconv.a
StaticLibrary  : libproj.a

However while it's going through geos it comes up with the following error:

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
$

Can someone help with how I can fix this? Any help greatly appreciated!

Was it helpful?

Solution

This appears to be an issue with the NDK. This error occurs when the argument list provided is too long. Usually this can be fixed using a options file. See @ parameter for arm-linux-androideabi-ar.

Searching the internet it appears this issue has bee reported to Google. The only workaround I can offer is to use a Ubuntu VM to compile the native code.

OTHER TIPS

The issue can be solved by making the path to the ndk and the spatialite-android folder shorter.

I moved the ndk to the c:\cygwin folder and renamed it from android-ndk-r8b to ndk. Likewise I moved the android-spatialite folder to c:\cygwin and renamed it to sla

Then cd into /sla/spatialite-android-library/jni folder and run /ndk/ndk-build -j8

And it compiles :)

Try adding the following to the makefiles.

LOCAL_SHORT_COMMANDS := true
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top