我在以下地方构建一个现有项目时遇到了一些小麻烦:
http://code.google.com/p/spatialite-android/我用的是Win7和Cygwin
我通过使用“”进行克隆来获得源代码。将其放入:C:\temp\ECLIPSE\工作区\SA1 1
我下载以下内容:
我把这些放在: 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
$有人能帮我解决这个问题吗?任何帮助都非常感谢!
发布于 2012-06-25 18:07:36
这似乎是NDK的一个问题。当提供的参数列表太长时,会发生此错误。通常可以使用选项文件来修复这个问题。参见@ar androideabi-ar参数。
搜索互联网,似乎这一问题已向谷歌报告。我能提供的唯一解决办法是使用Ubuntu编译本机代码。
发布于 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。
并汇编如下:)
发布于 2012-07-30 14:08:11
尝试将以下内容添加到makefile中。
LOCAL_SHORT_COMMANDS := truehttps://stackoverflow.com/questions/11185221
复制相似问题