This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

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

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

Parents
  • 默认已经配置交叉编译环境,能够编译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。

Reply
  • 默认已经配置交叉编译环境,能够编译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。

Children