基於android studio上OpenCL編譯環境配置

一、前期準備(以華爲手機爲例)

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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章