QT5.12 交叉编译到hisi平台

一、 hisi交叉编译环境安装

参考 安装交叉编译工具:arm-himix200-linux

简略摘要:

  • 下载后执行:
tar -zxvf arm-himix200-linux.tgz
cd arm-himix200-linux
sudo ./arm-himix200-linux.install

二、qt安装

1. qt 下载

2. qt安装

  • 安装环境:
    • Ubuntu 16.4 64位。
    • hisi交叉编译工具链路径: /opt/hisi-linux (上面安装arm-himix200-linux时默认的路径)
    • qt-everywhere-src-5.12.0 当前保存的位置 /opt
    • 期望安装的位置 /opt, 如截图

在这里插入图片描述

  • 安装步骤
    • 切换到su权限, 并将下载的qt文件拷贝到/opt目录

    •  tar xf qt-everywhere-src-5.12.0.tar  # 解压QT	
      
    •   cd  /opt/qt-everywhere-src-5.12.0 # 切换 目录到qt下, 准备安装 
      
    •  ./configure -prefix  /opt/arm-himix200_qt5.12.0  -release -opensource -confirm-license -static  -shared -platform linux-g++  -xplatform linux-arm-himix200-linux-g++  -qt-freetype -no-pch -no-avx -no-openssl -no-cups -no-dbus -no-opengl -no-glib  -no-xcb  -no-eglfs  -no-pkg-config -no-iconv -skip qtwebchannel -skip qtcanvas3d
      

      解释:

      • -prefix /opt/arm-himix200_qt5.12.0 值将交叉编译后的结果放到/opt/arm-himix200_qt5.12.0 目录
      • -static 生成静态库 即.so库, 如果需要在板子上运行, 则必须加入该参数
      • -platform linux-g++ -xplatform linux-arm-himix200-linux-g++ 只 本地采用 linux-g++ 编译, 交叉编译的工具链为linux-arm-himix200-linux-g++ 注: 如果xplatform 是自己制定的平台, 可能在.config时报错, 解决方法见最下方附录1:
        		ERROR: Invalid target platform 'linux-arm-himix200-linux-g++'.
        
      • 如果不想编译qt 的example 可以加入 -nomake examples 命令
    •  make -j8 # 漫长的编译, 可以根据自己的电脑选择不同的编译条数
      
    •   make install -j8
      
    • 注: 如果有编译错误, 直接修改源码进, 然后重新make (我在某次编译时出现过这个问题, 在写这篇blog的时候没有出现 所以没有列出具体的修改方法)

三、 移植到hisi3516板上

  • 前提条件,hisi板的各个环境已经初始化完成
  1. copy 编译出的demo到开发板上
    demo路径 opt/arm-himix200_qt5.12.0/examples/widgets/widgets/analogclock目录下的analogclock可执行文件
    2.拷贝各个so库到板子的/lib目录下, 路径:/opt/arm-himix200_qt5.12.0/lib简单起见, 也可在运行时提示缺什么库拷贝什么库

  2. 在板子上设置环境变量

    export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=600x1024:mmSize=600x1024:offset=0x0:tty=/dev/ttyAMA0
    export QT_QPA_FONTDIR=/lib/fonts        
    export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/platforms         
    export QT_DEBUG_PLUGINS=1 
    

    解释:
    QT_QPA_PLATFORM 指定平台的运行环境为linuxfb 分辨率为600x1024
    QT_QPA_FONTDIR 字库的位置, 改为板子实际的位置
    QT_QPA_PLATFORM_PLUGIN_PATH 指定PLUGIN_PATH的位置, 在当前环境下即linuxfb的位置。 如果板子上没有, 从/opt/arm-himix200_qt5.12.0/plugins/platforms目录下拷贝
    QT_DEBUG_PLUGINS开启debug调试模式, 用于启动时的调试, 调试完毕后删除该变量

  3. 在开发板上运行 ./analogclock提示

    ERROR: Feature 'xcb' was enabled, but the pre-condition 'features.thread && libs.xcb && tests.xcb_syslibs && features.xkbcommon-x11' failed.
    

    解决方法 指定环境变量为Llinuxfb一般在嵌入式板子上都是使用linuxfb的,说明第三步的环境变量有问题, 再检查下。

  4. demo运行成功

四、附录1 QT增加自己指定平台的编译方法

  1. cd到qtbase/mkspecs目录,找一个相似的工具链, cp一份并修改为指定的工具链
    •   	cd qtbase/mkspecs # cd到该目录
        	cp linux-arm-gnueabi-g++/ linux-arm-himix200-linux-g++ -r # 拷贝一份linux-arm-gnueabi-g++  
        	cd linux-arm-himix200-linux-g++ #  切换到新复制的目录并修改
      
    • 当前qmake.conf的内容为:在这里插入图片描述

    • 修改为
      在这里插入图片描述
      即重新指定交叉编译链

    • 完成 , 重新回到qt安装步骤继续安装

Logo

更多推荐