一、前期准备(以华为手机为例)
1. 先在手机等移动端设备上安装opencl-z,检测设备所支持的opencl版本等信息
2. 连接手机等移动设备到ubuntu系统电脑,在root用户下输入adb shell 进入手机等移动设备的root环境;
3. 将手机等移动设备中opencl的so包用命令adb pull 拷贝到本地,命令具体如下:adb pull /system/vendor/lib64/libOpenCL.so /home/sunjf/sunjf/code/
参考:https://blog.csdn.net/gaussrieman123/article/details/86540230
二、在android studio环境中
1. 将手机等移动设备中opencl所对应的头文件CL全部拷贝到工程目录下头文件所在文件位置,诸如/mace/macelibrary/src/main/cpp/include/
2. 将手机等移动设备的opencl的so包复制到工作目标下库文件所在位置,诸如/mace/macelibrary/src/main/jniLibs/arm64-v8a/
3. 配置CMakeList文件,在CMakeList文件中添加opencl头文件及so包相关位置路径,具体如下:
参考:https://www.twblogs.net/a/5b89b1ff2b71775d1ce346a6
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include/)
add_library(opencl_lib STATIC IMPORTED)
set_target_properties(opencl_lib PROPERTIES
IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/src/main/jniLibs/arm64-v8a/${}/libOpenCL.so)
三、遇到问题
1. /../../../src/main/jniLibs/arm64-v8a//libOpenCL.so: error adding symbols: File in wrong format
解决方法:
参考:https://blog.csdn.net/mazaiting/article/details/79709735
ndk {
abiFilters 'armeabi'
}
2. 纠错:
出现问题1是因为pull 成手机上32位的so包,而arm64-v8a是基于64位的,所以应该pull 位置在lib64文件夹中的libOpenCL.so。