编译适用于Android的英特尔TBB-ARMv7 ARMv8 MIPS
Compile Intel TBB for Android - ARMv7 ARMv8 MIPS
我发现在获得一个工作的.so库时遇到了一些严重的困难,以便使用Android NDK和intel TBB开发Android应用程序。基本上,我已经下载了Android版本4.4更新4捆绑包,并遵循了那里的步骤(有点,因为文档不正确…)。
问题是,我在编译时只能获得x86和x86_64.so库,因为那里没有armeabi XXX或mips文件夹和必需的.so。
使用建议的命令./ndk-build.cmd tbb target=android arch=arm
不会产生任何结果,事实上它告诉我
/workspace/tbb44_20160413oss/lib/android/mips/libtbb.so库未找到。将mips版本的库复制到/home/filippo/workspace/tbb44_20160413oss/lib/android/mips文件夹以启用其构建。
其他丢失的目录也是如此。
三、只使用./ndk-build.cmd tbb target=android
给了我一组目录:x86和x86_64,我可以在Android Studio中使用它们,并与模拟器一起工作。
结果是,我可以在模拟器上正确测试我的应用程序,但无法在我的个人设备上运行。我在这里错过了什么?
Application.mk
APP_ABI := x86 x86_64 // if I choose all, of course it won't find the .so for the other architectures
APP_GNUSTL_FORCE_CPP_FEATURES := exceptions rtti
APP_STL := gnustl_shared
Android.mk
LOCAL_PATH := $(call my-dir)
#
# TBB
#
include $(CLEAR_VARS)
LOCAL_MODULE := libtbb
LOCAL_SRC_FILES := $(LOCAL_PATH)/$(TARGET_ARCH_ABI)/libtbb.so
include $(PREBUILT_SHARED_LIBRARY)
#
# Main module
#
include $(CLEAR_VARS)
LOCAL_MODULE := myndkapp
LOCAL_SHARED_LIBRARY := libtbb
include $(BUILD_SHARED_LIBRARY)
谢谢。
正如您在'jni/Application.mk'中看到的,您可以使用目标'ia32'、'intel64'、'arm'和'arm64'。
此外,看起来您正试图在Windows平台上进行构建,因此您应该在make命令中添加一个tbb_os=windows
,如下所示:
C:TEMPtbb44_20160413osssrc>ndk-build.cmd tbb tbbmalloc target=android arch=arm tbb_os=windows
- 英特尔 TBB 程序不会终止,可能会误用参考计数器
- 如果我的手机是 ARMv8,为什么 Android Studio 会C++编译为 ARMv7?
- tbb::p arallel_for_each 在取消时未执行
- 如何完全关闭 TBB 代码中的线程
- Tbb 库:错误:编写自定义类函数而不是 lambda 表达式时,对函数的调用不匹配
- 注册 TBB 的环境变量
- 如何将 tbb concurrent_hash_map转换为常规标准::地图?
- tbb:current_unordered_map()-向量中每个唯一元素的ID
- tbb::enumerable_thread_specific在其他线程库中工作吗
- TBB spin_mutex parallel_for内部以阻止关键部分
- 如何使用 TBB 在单个线程中运行函数
- 如何从TBB concurrent_hash_map C++迭代和擦除
- 通过引用将函数传递给 TBB 任务时无法返回值
- 手动管理和更新英特尔 TBB 流程图?
- 英特尔 TBB 计算图:如何指定节点的输入队列容量
- 无法在带有 gst-launch-1.0 的 Qemu 的 armv7 上播放 wav 音频
- TBB 编译器错误 -"my_task":必须初始化引用
- 在 64 位 Linux armv8 计算机上编译 32 位二进制文件时遇到问题
- 在调试模式下使用英特尔 TBB
- 编译适用于Android的英特尔TBB-ARMv7 ARMv8 MIPS