3

次の場所で既存のプロジェクトをビルドするのに少し問題があります。

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

Win7とCygwinを使用しています

「GITforWindows」を使用してクローンを作成することでソースコードを取得します。次の場所に配置します:C:\ temp \ ECLIPSE \ worksheet \ SA1

私は以下をダウンロードします:

これらを次の場所に配置します:C:\ temp \ ECLIPSE \ワークスペース\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 \ worksheet \ 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
$

誰かが私がこれを修正する方法を手伝ってもらえますか?どんな助けでも大歓迎です!

4

3 に答える 3

3

この問題は、ndkとspatialite-androidフォルダーへのパスを短くすることで解決できます。

ndkをc:\ cygwinフォルダーに移動し、名前をandroid-ndk-r8bからndkに変更しました。同様に、android-spatialiteフォルダーをc:\ cygwinに移動し、名前をslaに変更しました。

次に、/ sla / spatialite-android-library / jniフォルダーにcdして、/ ndk /ndk-build-j8を実行します。

そしてそれはコンパイルします:)

于 2012-10-24T17:39:12.317 に答える
2

以下をmakefileに追加してみてください。

LOCAL_SHORT_COMMANDS := true
于 2012-07-30T14:08:11.603 に答える
0

これはNDKの問題のようです。このエラーは、提供された引数リストが長すぎる場合に発生します。通常、これはオプションファイルを使用して修正できます。arm-linux-androideabi-arの@パラメーターを参照してください。

インターネットを検索すると、この問題はGoogleに報告されているようです。私が提供できる唯一の回避策は、UbuntuVMを使用してネイティブコードをコンパイルすることです。

于 2012-06-25T18:07:36.230 に答える