首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于Android构建的Spatialite

用于Android构建的Spatialite
EN

Stack Overflow用户
提问于 2012-06-25 07:38:13
回答 3查看 2.5K关注 0票数 3

我在以下地方构建一个现有项目时遇到了一些小麻烦:

代码语言:javascript
复制
http://code.google.com/p/spatialite-android/

我用的是Win7和Cygwin

我通过使用“”进行克隆来获得源代码。将其放入:C:\temp\ECLIPSE\工作区\SA1 1

我下载以下内容:

  • 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并执行以下操作:

代码语言:javascript
复制
$ 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,并做了一些修改,如下所示

代码语言:javascript
复制
/* 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,做以下工作:

代码语言:javascript
复制
$ 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++行一起,下面将编译

代码语言:javascript
复制
StaticLibrary  : libiconv.a
StaticLibrary  : libproj.a

然而,当它通过geos时,会产生以下错误:

代码语言:javascript
复制
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
$

有人能帮我解决这个问题吗?任何帮助都非常感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-25 18:07:36

这似乎是NDK的一个问题。当提供的参数列表太长时,会发生此错误。通常可以使用选项文件来修复这个问题。参见@ar androideabi-ar参数。

搜索互联网,似乎这一问题已向谷歌报告。我能提供的唯一解决办法是使用Ubuntu编译本机代码。

票数 0
EN

Stack Overflow用户

发布于 2012-10-24 17:39:12

这个问题可以通过缩短ndk和spatialite文件夹的路径来解决。

我将ndk移到c:\cygwin文件夹,并将其从android-ndk-r8b重命名为ndk。同样,我将android-spatialite文件夹移到c:\cygwin,并将其重命名为sla。

然后cd进入/sla/spatialite android-库/jni文件夹并运行/ndk/ndk-构建-j8。

并汇编如下:)

票数 3
EN

Stack Overflow用户

发布于 2012-07-30 14:08:11

尝试将以下内容添加到makefile中。

代码语言:javascript
复制
LOCAL_SHORT_COMMANDS := true
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11185221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档