Подтвердить что ты не робот

Port Boost для Android

Кто-нибудь портировал и использовал Boost на Android?

Я нашел инструмент, который создает boost для android (https://github.com/MysticTreeGames/Boost-for-Android), сборка выполнена успешно, и у меня есть статический увеличить libs. Но когда я пытаюсь использовать его в простом приложении для Android:

#include <jni.h>
#include "boost/thread.hpp"

void f()
{
};

У меня много ошибок компиляции: переопределения, необъявленные и т.д. Кажется, это относится к заголовкам STD NDK. Мой Android.mk выглядит так:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

TARGET_PLATFORM := android-8

LOCAL_MODULE := Boost

LOCAL_CFLAGS := -DMYSTIC -I$(LOCAL_PATH)/boost/include/ 
LOCAL_LDLIBS := -L$(LOCAL_PATH)/external/boost/lib/

LOCAL_CPPFLAGS  := -fexceptions
LOCAL_CPPFLAGS  += -frtti
LOCAL_CPPFLAGS  += -DBOOST_THREAD_LINUX
LOCAL_CPPFLAGS  += -DBOOST_HAS_PTHREADS
LOCAL_CPPFLAGS  += -D__arm__
LOCAL_CPPFLAGS  += -D_REENTRANT
LOCAL_CPPFLAGS  += -D_GLIBCXX__PTHREADS
LOCAL_CPPFLAGS  += -DBOOST_HAS_GETTIMEOFDAY

LOCAL_SRC_FILES := main.cpp

include $(BUILD_SHARED_LIBRARY)

Также я попытался построить с Crystax_NDK_r4 и Android_NDK_r5b, но он не разрешил проблему.

Любые идеи?

4b9b3361

Ответ 1

Я решил проблему. Я указал неверный путь к NDK. Script исправления CrystaX NDK тоже. Теперь он работает!

Ответ 2

Я просто нашел простой способ повысить производительность под андроидом NDK, который не нуждается в исправлении.

Я не использую Android.mk для создания boost, вместо этого я использую автономную инструментальную цепочку для сборки, просто привязываю toolchain CodeSourcery.

  • Сначала подготовьте инструментальную цепочку NDK:

    Установите инструментальную цепочку NDK как отдельную инструментальную цепочку. См. $NDK/docs/STANDALONE-TOOLCHAIN.html

    Добавьте путь корзины для перекрестной привязки к вашему PATH

  • Создайте boost.Build tool, в Boost prj:

    ./bootstrap.sh

  • echo ", используя gcc: android: arm-linux-androideabi-g++; > $HOME/user-config.jam

  • Пример сборки

    ./b2 --prefix = $HOME/mybuild --with-thread --with-system toolset = gcc-android threading = multi link = статическая установка

Я надеюсь, что они могут вам помочь.

Ответ 3

Вы можете скачать коллекцию скриптов, которые будут загружать и создавать некоторые популярные библиотеки с открытым исходным кодом c/С++ для Android и ios, включая boost в этом месте.

https://github.com/mevansam/cmoss