/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文件。