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!
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 :)
尝试将以下内容添加到makefile中。
LOCAL_SHORT_COMMANDS := true
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.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.