我在以下位置构建现有项目时遇到了一些麻烦:
http://code.google.com/p/spatialite-android/
我正在使用Win7和Cygwin
我通过使用“GIT for Windows”进行克隆来获取源代码。将其放入:C:\ temp \ ECLIPSE \ workspace \ SA1
我下载以下内容:
我将它们放在: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
$
有人可以帮忙解决这个问题吗?任何帮助非常感谢!
答案 0 :(得分:3)
可以通过缩短ndk和spatialite-android文件夹的路径来解决此问题。
我将ndk移动到c:\ cygwin文件夹,并将其从android-ndk-r8b重命名为ndk。 同样,我将android-spatialite文件夹移动到c:\ cygwin并将其重命名为sla
然后进入/ sla / spatialite-android-library / jni文件夹并运行/ ndk / ndk-build -j8
它编译:)
答案 1 :(得分:1)
尝试将以下内容添加到makefile中。
LOCAL_SHORT_COMMANDS := true
答案 2 :(得分:0)
这似乎是NDK的一个问题。提供的参数列表太长时会发生此错误。通常可以使用选项文件来修复此问题。请参阅arm-linux-androideabi-ar的@参数。
在互联网上搜索此问题已向Google报告。我能提供的唯一解决方法是使用Ubuntu VM来编译本机代码。