移植opengl应用到yocto sdk

移植应用到yocto sdk

1. yocto sdk 安装

  1. sdk 包解压

    tar -xf sdk.tar
    
  2. sdk 安装

    cd sdk
    ./poky-glibc-x86_64-xxx-full-aarch64-toolchain-2.5.sh 
    

    具体如下图:
    请添加图片描述

  3. 安装完成后进行环境变量配置:

    cd xxx/xxx/sdk/sumo/
    ls
    source environment-setup-aarch64-poky-linux
    aarch64-poky-linux-gcc -v 
    

    配置完成后上述命令可以看到相关路径信息则说明配置成功,如下图请添加图片描述

2. ffmpeg 编译安装

  1. 修改原始的build脚本,将其中的环境变量标记为当前sdk中环境目录

  2. 对应的gcc需要修改为sdk中实际使用的交叉编译工具

  3. 将ffmpeg生成项添加到sdk目录中,在编译app时使用

    rsync -alP ./*  ../../../sumo/sysroots/x86_64-pokysdk-linux/usr/ 
    rsync -alP ./*  ../../../sumo/sysroots/aarch64-poky-linux/usr/
    

    注意这里有个问题,现在是手动的将so和链接文件sync到了sdk中,但是实际target中的是没有这些so的,所以需要后续安装一下子;

注意,上述为arm版本实际编译使用,在x86版本的话则直接安装对应ffmpeg相关库即可;

3. 编译应用

3.1 ARM 版本编译

  1. 编译指令为make arm_test

  2. 由于原来在buildroot编译源码中添加的这个app,所以没有按照标准导出sdk的方式进行使用,而是直接指定了源码toolchain路径,所以这部分信息需要配置

  3. 基于yocto 导出sdk的情况下:

    1. drm相关文件路径需要指定:

      INCLUDE_BASE_ARM=-I${ARM_SDK_PATH}/aarch64-poky-linux/usr/include/drm
      
    2. window 窗口依赖需要指定defined:

      ARM_HOST= -D __GBM__
      
    3. freetype2依赖路径需要指定:

      INCLUDE_FREETYPE_ARM=-I${ARM_SDK_PATH}/aarch64-poky-linux/usr/include/freetype2
      

    修改上述部分后可以直接编译通过;

3.2 x86版本

  1. 安装ffmpeg相关库:libav系列

    sudo apt-cache search xxx
    sudo apt install xxx
    
    xxx = 
    libavutil-dev
    libavcodec-dev
    libavformat-dev
    libswscale-dev
    libavfilter-dev
    libavdevice-dev
    zlib1g-dev
    
  2. 安装freetype2

    源码网址:https://download.savannah.gnu.org/releases/freetype/

    下载完成后解压编译一条龙:

    tar -xf freetype-2.19.tar.gz
    cd freetype-2.19
    ./configure --prefix=/usr
    make -j
    sudo make install
    

    注意上述需要指定安装路径,否则install完成后没有安装到系统usr中

  3. 编译程序

    make x86_test
    

4. 问题记录

4.1 real-ld 链接 crt*.o 失败

  1. 确认 sdk中是否存在上述文件

    find ./ -name "crt*o"
    

    ./sysroots/aarch64-poky-linux/usr/lib/crtn.o
    ./sysroots/aarch64-poky-linux/usr/lib/crt1.o
    ./sysroots/aarch64-poky-linux/usr/lib/arm-pokymllib32-linux-gnueabi/7.3.0/crtendS.o
    ./sysroots/aarch64-poky-linux/usr/lib/crti.o
    ./sysroots/aarch64-poky-linux/usr/lib64/crtn.o
    ./sysroots/aarch64-poky-linux/usr/lib64/aarch64-poky-linux/7.3.0/crtend.o

    说明sdk中存在上述文件;

  2. 确认编译时的搜索目录:

    aarch64-poky-linux-gcc -print-search-dirs 
    

    请添加图片描述上图中可以看到,与sdk中的目录不同,即需要将上述目录加进去,或者将上述文件添加到已经search的目录中

  3. 根据configure参数和sdk中environment 配置项重新构建编译选项
    请添加图片描述

    配置成上述参数后可以编译完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值