2013-06-05 2 views
1

Я пытаюсь скомпилировать GMP для Android (рука), но я получил очень странную ошибку. Во-первых, я создал несколько вещей, как описано другой SO вопрос here:Ошибка конфигурации библиотеки GMP для платформы Android

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 работает, марка идет хорошо, но все тесты 9/9 терпят неудачу, когда я делаю make check. Может ли кто-нибудь указать мне в правильном направлении с этими ошибками или о том, как правильно и правильно компилировать GMP для Android? Любая помощь очень ценится.

+0

Вы пробовали './configure ABI = 32 -prefix =/location/--enable-cxx -host = arm-linux-androideabi'? Может быть некоторая ошибка, которая приводит к тому, что параметр ABI будет равен 64 ... –

+0

Да, действительно, у меня есть, но он говорит, что ABI = 32 не распознается и отображает список распознанных опций. Список, хотя и является «стандартным». Вот и все, поэтому я либо ставил ABI = стандарт, либо вообще ничего не ставил. Это все еще не работает. – shblsh

+0

Вы говорите, что тесты 9/9 терпят неудачу, но вы не называете эти тесты или не говорите, как они терпят неудачу, это не очень полезно. Что касается проблемы lconv, это известная андроида ошибка, которую AFAICS они не будут исправлять. Мы могли бы обойти это в GMP когда-нибудь, но я не тороплюсь сделать это сам. Просто замените 'localeconv() -> decimal_point' на'.. '' In ismpf.cc. –

ответ

0

Сброс CFLAGS env var решил проблему для меня.

Смежные вопросы