use*_*354 16 c++ android gcc boost android-ndk-r5
我有问题移植并使用Android-ndk-r5b将boost库链接到android.我首先使用以下步骤构建boost库(没有mpi,python):
# if [ os.name ] = "NT" { api = win32 ; }
androidNDKRoot = ../android-ndk-r5b ;
using gcc : android4.4.3 : $(androidNDKRoot)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-g++.exe :
--sysroot=$(androidNDKRoot)/platforms/android-3/arch-arm
-mthumb
-Os
-fno-strict-aliasing
-O2
-DNDEBUG
-g
-fexceptions
-frtti
-lstdc++
-I$(androidNDKRoot)/sources/cxx-stl/gnu-libstdc++/include
-I$(androidNDKRoot)/sources/cxx-stl/gnu-libstdc++/libs/armeabi/include
-D__GLIBC__
-DBOOST_NO_INTRINSIC_WCHAR_T
$(androidNDKRoot)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-ar.exe
$(androidNDKRoot)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-ranlib.exe
linux
;
bjam.exe --user-config=user-config.jam --without-python --without-mpi toolset=gcc-android4.4.3 link=static runtime-link=static target-os=linux --stagedir=android > d:\out.txt
APP_STL := gnustl_static APP_PLATFORM := android-3 APP_CPPFLAGS += -mthumb APP_CPPFLAGS += -Os APP_CPPFLAGS += -fno-strict-aliasing APP_CPPFLAGS += -O2 APP_CPPFLAGS += -DNDEBUG APP_CPPFLAGS += -g APP_CPPFLAGS += -fexceptions APP_CPPFLAGS += -frtti APP_CPPFLAGS += -lstdc++ APP_CPPFLAGS += -D__GLIBC__ APP_CPPFLAGS += -DBOOST_NO_INTRINSIC_WCHAR_T APP_CPPFLAGS += -L/cygdrive/d/Android/boost_1_46_0/android/lib/
# Howto # http://source.android.com/porting/build_cookbook.html # LOCAL_PATH:= $(call my-dir) # ============================================================== # libudt # ============================================================== include $(CLEAR_VARS) LOCAL_MODULE := libudt LOCAL_C_INCLUDES += /cygdrive/d/Android/boost_1_46_0/ LOCAL_SRC_FILES += udt.cpp LOCAL_STATIC_LIBRARIES := boost_thread-gcc-mt-s-1_46 include $(BUILD_SHARED_LIBRARY)
#include "boost/bind.hpp"
#include "boost/thread.hpp"
void thread_fn (int)
{
}
extern "C" int func1 ()
{
boost::thread thrd (boost::bind (thread_fn, 1));
thrd.join ();
return 0;
}
Compile++ thumb : udt > > >': D:/Android/boost_1_46_0/boost/thread/detail/thread.hpp:204: undefined reference to `boost::thread::start_thread()' D:/Android/boost_link/obj/local/armeabi/objs/udt/udt.o: In function `func1': D:/Android/boost_link/jni/udt.cpp:19: undefined reference to `boost::thread::join()' D:/Android/boost_link/jni/udt.cpp:20: undefined reference to `boost::thread::~thread()' D:/Android/boost_link/jni/udt.cpp:20: undefined reference to `boost::thread::~thread()' D:/Android/boost_link/obj/local/armeabi/objs/udt/udt.o:(.data.rel.ro._ZTIN5boost6detail11thread_dataINS_3_bi6bind_tIvPFv iENS2_5list1INS2_5valueIiEEEEEEEE[typeinfo for boost::detail::thread_data > > >]+0x8): undefined reference to `typeinfo for boost::detail::thread_data_base' collect2: ld returned 1 exit status make: *** [/cygdrive/d/Android/boost_link/obj/local/armeabi/libudt.so] Error 1
小智 0
我不知道你是否可以使用gcc,然后将静态库链接到Android平台。我所知道的是,一切都必须在NDK编译器下编译(因为指令集不同)。
你可以使用这个: https: //github.com/MysticTreeGames/Boost-for-Android ( .tar )
您将需要NDK 的定制版本。
| 归档时间: |
|
| 查看次数: |
10578 次 |
| 最近记录: |