Проблема сборки STLport NDK r5/Android

Я пытаюсь создать STLport для Android. Я получил следующие шаги, но они не работают:

1 - Клонировать репозиторий STLport, используя:

клонировать git git://stlport.git.sourceforge.net/gitroot/stlport/stlport

2 - Настройте среду, используя:

./configure --target=arm-eabi --with-extra-cxxflags="-fshort-enums" 
            --with-extra-cflags="-fshort-enums" 

3 - Из каталога src создайте его, используя

сделать SYSROOT "{МОЙ путь NDK}/платформы/android-5/arch-arm/" выпуск-статический

Но я получил следующие ошибки:

In file included from ../stlport/stl/_alloc.h:45,
                 from ../stlport/memory:29,
                 from dll_main.cpp:41:
../stlport/stl/_new.h:45:24: error: new: No such file or directory
In file included from ../stlport/stl/_limits.h:36,
                 from ../stlport/limits:29,
                 from dll_main.cpp:48:
../stlport/stl/_cwchar.h:26:30: error: cstddef: No such file or directory
In file included from ../stlport/stl/_utility.h:35,
                 from ../stlport/utility:35,
                 from dll_main.cpp:40:
../stlport/type_traits:889: error: 'declval' was not declared in this scope
../stlport/type_traits:889: error: expected primary-expression before '>' token
../stlport/type_traits:889: error: expected primary-expression before ')' token
../stlport/type_traits:889: error: 'declval' was not declared in this scope
../stlport/type_traits:889: error: expected primary-expression before '>' token
../stlport/type_traits:889: error: expected primary-expression before ')' token
../stlport/type_traits:889: error: ISO C++ forbids declaration of 'decltype' with no type
../stlport/type_traits:889: error: ISO C++ forbids in-class initialization of non-const static member 'decltype'
../stlport/type_traits:889: error: template declaration of 'int std::tr1::detail::decltype'
../stlport/type_traits:942: error: ISO C++ forbids declaration of 'decltype' with no type
../stlport/type_traits:942: error: ISO C++ forbids in-class initialization of non-const static member 'decltype'
../stlport/type_traits:942: error: template declaration of 'int std::tr1::detail::decltype'
make: *** [obj/arm-eabi-gcc/so/dll_main.o] Error 1

Есть ли какие-либо включаемые каталоги или конфигурации, которые мне не хватает?

Спасибо,

Серхио


person Sergio    schedule 30.12.2010    source источник


Ответы (3)


Android NDK r5 теперь имеет поддержку STL, просто добавьте APP_STL := stlport_staticв файл Android.mk, допустимые параметры для переменной APP_STL:

  • stlport_static
  • stlport_shared
  • gnustl_static

Обратите внимание, что только вариант gnustl_static поддерживает исключения.

person ismail    schedule 30.12.2010
comment
Привет. Я пытаюсь собрать STLport, так как это необходимое условие для другой библиотеки, которую я пытаюсь создать. Эта библиотека является сторонней библиотекой, в которой нет Android.mk, а есть только обычный Makefile. Есть ли другой способ установить APP_STL, чтобы включить на нем поддержку STL? Я попытался добавить включаемые файлы и stlport_static непосредственно в Makefile (добавляя их к параметрам -I и -l). Сборка пошла немного дальше, но они потерпели неудачу, так что, возможно, этих изменений было недостаточно. - person Sergio; 30.12.2010

Мне удалось скомпилировать STL-Port на Android NDK R3, используя репозиторий STLPort GIT. Однако необходимы некоторые «адаптации». Вы можете найти описание процедуры здесь. Это должно работать и для NDK R5.

Надеюсь, это поможет.

person Ratamovic    schedule 26.01.2011

Последняя версия на git кажется сломанной. Попробуйте использовать предыдущую версию (я использовал версию от среды, 1 декабря 2010 г., и она работала нормально).

person Sergio    schedule 10.01.2011