我正在尝试为 android (arm) 编译 GMP,但我收到了一个非常奇怪的错误。首先,我按照此处描述的另一个 SO 问题设置了一些内容:
export NDKROOT=/prod/ndk
$NDKROOT/build/tools/make-standalone-toolchain.sh --platform=android-9 -- install-dir=$NDKROOT/android_armeabi
export CC="$NDKROOT/android_armeabi/bin/arm-linux-androideabi-gcc --sysroot=$NDKROOT/android_armeabi/sysroot"
export CXX="$NDKROOT/android_armeabi/bin/arm-linux-androideabi-g++ --sysroot=$NDKROOT/android_armeabi/sysroot"
export AR="$NDKROOT/android_armeabi/bin/arm-linux-androideabi-ar"
export SYSROOT="$NDKROOT/android_armeabi/sysroot"
export PATH="$NDKROOT/android_armeabi/bin":$PATH
然后我简单地运行./configure --enable-cxx --prefix=/local/to/where/i/want/to/install --host=arm-none-linux-gnueabi
并且配置顺利,以下是输出的一部分:
Version: GNU MP 5.1.1
Host type: arm-none-linux-gnueabi
ABI: standard
Install prefix: /location/to/where/i/want/to/install
Compiler: /prod/ndk/android_armeabi/bin/arm-linux-androideabi-gcc -- sysroot=/prod/ndk/android_armeabi/sysroot -std=gnu99
Static libraries: yes
Shared libraries: yes
到目前为止一切顺利,但是当我运行时make
,我收到以下错误:
ismpf.cc: In function 'std::istream& operator>>(std::istream&, mpf_ptr)':
ismpf.cc:48:43: error: 'struct lconv' has no member named 'decimal_point'
make[2]: *** [ismpf.lo] Error 1
make[2]: Leaving directory `~/Downloads/gmp-5.1.1/cxx'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `~/Downloads/gmp-5.1.1'
make: *** [all] Error 2
所以我的第一个问题就在那里。有任何想法吗?
只是出于好奇,我尝试重新运行与上面完全相同的配置命令,但sudo
先使用它。几秒钟后,我收到以下信息:
configure: error: Oops, mp_limb_t is 64 bits, but the assembler code
in this configuration expects 32 bits.
还有第二个(出现了非常奇怪的问题)。
再次出于好奇,我尝试重新启动并清除我们创建的所有变量,然后简单地运行 GMP 手册推荐的命令:./configure --prefix=/location/ --enable-cxx --host=arm- linux-androideabi
./configure 运行,make 运行良好,但是当我这样做时,所有 9/9 测试都失败了make check
。任何人都可以指出这些错误的正确方向,或者如何尝试并正确编译 GMP for android?非常感谢任何帮助。