/vendor/lib64/libOpenCL.so在安卓應用中無訪問權限的解決辦法——
當采用OpenCL對部分NDK代碼進行加速的時候,發現運行無法調用廠商提供的libOpenCL庫,原因是權限不夠,以下為解決辦法:
-
查看該庫文件是否在公共庫聲明中,如下在adb shell中檢查
adb root
adb shell
cd /vendor/etc
cat public.libraries.txt
如果顯示類似如下
libMcClient.so
libMcRegistry.so
libOpenCL.so
表明沒問題,但如果沒有發現libOpenCL.so,表明還需要添加它到public.libraries.txt中,
echo libOpenCL.so >> public.libraries.txt -
查看是否有對庫所在路徑的讀寫權限,在adb shell中執行:
getenforce
顯示
Permissive
則表明OK,如果為
Enforcing
則表明當前沒有開啟讀寫權限,系統處於被保護狀態(readonly system).
一切以adb root成功為前提,執行以下操作:
setenforce 0
這樣,應該就能正常使用libOpenCL.so了。如果還不行,那么請查看下/vendor/lib64/下是否真的存在libOpenCL.so文件。