一、前期準備(以華爲手機爲例)
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。