【发布时间】:2017-10-15 09:32:44
【问题描述】:
我正在使用调用 Blaze 库 (https://bitbucket.org/blaze-lib/blaze) 中的函数的本机 c++ 代码构建一个 android 应用程序(针对 ARMv8)。
为了与 blaze 库有接口,我在 app 目录下的 CMakeLists.txt 中添加了以下代码:
set( blaze_src_DIR ../../../lib_source/blaze )
set( blaze_build_DIR ../../../lib_source/blaze/outputs )
file(MAKE_DIRECTORY ${blaze_build_DIR})
add_subdirectory(${blaze_src_DIR} ${blaze_build_DIR} )
find_package( blaze )
if( blaze_FOUND )
add_library( blaze_target INTERFACE )
target_link_libraries( blaze_target INTERFACE blaze::blaze )
message(STATUS "Added blaze library")
else()
message(STATUS "Still Could not add blaze library")
endif()
lib_source/blaze 确实包含 CMakeLists.txt,我按照 blaze 安装指南本身的说明进行操作
现在问题在于 gradle 同步。 cmake 尝试使用 FindBLAS.cmake 模块查找 BLAS 库,这会给出致命错误:未找到带有 BLAS API 的库。请指定图书馆位置。
我尝试安装几个 BLAS 库,但没有任何帮助。 ATLAS 不附带 cmake,opeBLAS 有 cmake 但需要 gfortran 来编译它。这将需要 ndk-bundle 工具链来支持 gfortran。我找到了这个链接来获取这些:https://www.bountysource.com/issues/48354321-how-to-link-openblas-for-armv7-by-cmake-in-android-studio
上述过程非常繁琐且漫长。我的问题是:在有或没有 BLAS 支持的情况下,让 Blaze 库工作的更简单的方法是什么(在我的设置中)?有我可以使用的预建库吗?如果是,请描述程序。
我找到了一些有用的链接,但无法找到解决问题的确切方法:
- [sourceforge.net/projects/openblas/files/v0.2.8-arm/]
- [github.com/xianyi/OpenBLAS/wiki/How-to-build-OpenBLAS-for-Android]
- [jcsilva.github.io/2017/03/18/compile-kaldi-android/]
提前致谢。
【问题讨论】:
-
我的公司有一个用于构建 OpenBLAS 的预构建和 conan.io 配方。很快就会熟悉 conan.io 工具,然后您就可以为 Blaze 编写一个使用我的 OpenBLAS 包的柯南配方。 bintray.com/slidewavellc/conan-libs/OpenBLAS%3Aslidewave
标签: android c++ cmake android-ndk blas