我对在以下位置建立现有项目有点困难:

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

我在用win7和cygwin
我通过使用“git for windows”克隆获得源代码。将其放入:c:\ temp\eclipse\workspace\sa1
我下载以下内容:
http://download.osgeo.org/geos/geos-3.2.2.tar.bz2
ftp://ftp.remotesensing.org/proj/proj-4.7.0.tar.gz
我把它们放在: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
$

有人能帮我解决这个问题吗?非常感谢您的帮助!

最佳答案

这似乎是ndk的问题。当提供的参数列表太长时发生此错误。通常可以使用选项文件修复此问题。请参阅arm-linux-androideabi-ar的@parameter。
在互联网上搜索这个问题似乎已经上报给谷歌。我能提供的唯一解决方法是使用ubuntu vm编译本机代码。

关于android - 适用于Android NDK Build的Spatialite,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11185221/

10-09 07:55