潮声隔雨深 · 2020年03月15日

Mail860+OpenCL+Android的交叉编译环境

请问,是否可以在linux服务器上建立针对Android7.1+Mail860+OpenCL的编译环境,谢谢!

1 个回答 得票排序 · 时间排序
一知半解 · 2020年03月15日

默认已经配置交叉编译环境,能够编译arm程序。
1)需要将Android平台上与OpenCL相关的so和头文件配置好
a)头文件采用cuda版本的即可 CL/cl/
将头文件拷贝到交叉编译的默认头文件搜索路径,该路径为:AndroidARM/sysroot/usr/include
b)将libOpenCL.so拷贝到库路径
由于google在android不再支持OpenCL,所以当前的OpenCL环境都是由GPU厂商和板子厂商共同构造。此处以RK3399为例:
adb pull /system/vendor/lib64/egl/libGLES_mali.so

Tips:
1)由于该so会依赖于很多其他so,所以最终将所有的so都拉下来,放到默认下面默认搜索路径(AndroidARM为安装的根目录):
AndroidARM/sysroot/usr/lib
2)注意拷贝的库是32bit还是64bit,需要与之前生成交叉编译工具一致

2)选择合适的编译选项
在实际编译过程中出现无法找到libGLES_mali.so所依赖的其它库,最终通过添加-Wl,-rpath选项的方法解决。
该方法的缺陷是,在android平台执行时会给出warning。

你的回答