QT5.9.9移植到Hi3536并支持openGL与TsLib

环境

  • Ubuntu: Ubuntu 20.20LTS
  • Board: Hi3536
  • ARM-GCC: arm-hisiv400-linux-
  • QT: Qt5.9.9
  • Libiconv: libiconv-1.14
  • Tslib: tslib-1.22

依赖

说明: TsLib是用于支持触摸屏;Libiconv是用于支持字符编码类型转换,也可以不用

1. 介绍

2. 源码获取

地址: https://download.qt.io/archive/qt/
版本: qt-everywhere-opensource-src-5.9.9.tar.xz

3. 配置编译

3.1 源码解压与移植准备

cd /home/ubuntu/Work/QT
tar xvf qt-everywhere-opensource-src-5.9.9.tar.xz
mv qt-everywhere-opensource-src-5.9.9 qt-everywhere-opensource-src-5.9.9_hi3536
cd qt-everywhere-opensource-src-5.9.9_hi3536/
mkdir build
cp -ar qtbase/mkspecs/linux-arm-gnueabi-g++ qtbase/mkspecs/linux-hi3536-g++
gedit qtbase/mkspecs/linux-hi3536-g++/qmake.conf

3.2 修改qmake.conf配置内容:

#
# qmake configuration for building with arm-hisiv400-linux-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
include(devices/common/linux_device_pre.conf)

DEFINES += EGL_FBDEV

# gpu  注意路径为Hi3536的SDK目录
QMAKE_INCDIR_EGL 	+= /home/ubuntu/Work/HiSilicon/SDK/Hi3536_SDK_V2.0.7.0/mpp_single/component/gpu/release/include
QMAKE_LIBDIR_EGL 	+= /home/ubuntu/Work/HiSilicon/SDK/Hi3536_SDK_V2.0.7.0/mpp_single/component/gpu/release/lib
QMAKE_LIBS_EGL   	+= -lmali
QMAKE_INCDIR_OPENGL_ES2 += /home/ubuntu/Work/HiSilicon/SDK/Hi3536_SDK_V2.0.7.0/mpp_single/component/gpu/release/include
QMAKE_LIBDIR_OPENGL_ES2 += /home/ubuntu/Work/HiSilicon/SDK/Hi3536_SDK_V2.0.7.0/mpp_single/component/gpu/release/lib
QMAKE_LIBS_OPENGL_ES2 += -lmali

# modifications to g++.conf
QMAKE_CC                = arm-hisiv400-linux-gcc -march=armv7-a -mfloat-abi=softfp -mfpu=neon-vfpv4 -mno-unaligned-access -fno-aggressive-loop-optimizations
QMAKE_CXX               = arm-hisiv400-linux-g++ -march=armv7-a -mfloat-abi=softfp -mfpu=neon-vfpv4 -mno-unaligned-access -fno-aggressive-loop-optimizations
QMAKE_LINK              = arm-hisiv400-linux-g++
QMAKE_LINK_SHLIB        = arm-hisiv400-linux-g++

# modifications to linux.conf
QMAKE_AR                = arm-hisiv400-linux-ar cqs
QMAKE_OBJCOPY           = arm-hisiv400-linux-objcopy
QMAKE_NM                = arm-hisiv400-linux-nm -P
QMAKE_STRIP             = arm-hisiv400-linux-strip

EGLFS_DEVICE_INTEGRATION = eglfs_mali

include(devices/common/linux_arm_device_post.conf)

load(qt_config)

3.3 配置

./configure -prefix /home/ubuntu/Work/QT/qt-everywhere-opensource-src-5.9.9_hi3536/build -opensource -confirm-license -release -strip -linuxfb -qt-zlib -no-gif -qt-libpng -qt-libjpeg -qt-freetype -no-rpath -no-pch -no-avx -no-openssl -no-cups -no-dbus -no-pkg-config -xplatform linux-hi3536-g++ -make libs -eglfs -opengl es2 -no-glib -nomake examples -nomake tools -tslib -qt-sqlite -I/home/ubuntu/Work/QT/tslib-1.22/build/include -L/home/ubuntu/Work/QT/tslib-1.22/build/lib

  • -no-iconv : 当添加此选项时表示不依赖libiconv此时可以不进行移植准备
  • -tslib: 使能Tslib,此时需要移植Tslib并指定对应的 libinclude位置
  • -eglfs:
  • -opengl:

3.4 编译安装

make
make install

4. 板卡配置

4.1 文件准备

  • 将编译生成的 lib/ plugins/ qml/ 3个文件夹拷贝到板子 /root/user/Qt/目录下
  • 将GPU以及udev相关的链接库拷贝到板子的/root/user/lib里面

4.2 环境变量

本移植过程直接使用脚本进行配置,脚本内容如下:

#!/bin/sh

echo "User Env Init ..."
# PATH

# GPU
export GPU_LIB_PATH=/root/user/lib
# QT
export QT_ROOT=/root/user/Qt
export QT_QPA_PLATFORM=eglfs:fb=/dev/fb0:size=1024x768:offset=0x0
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_EGLFS_FB=/dev/fb0
export QT_QPA_EGLFS_WIDTH=1024
export QT_QPA_EGLFS_HEIGHT=768
export QT_QPA_EGLFS_PHYSICAL_WIDTH=320
export QT_QPA_EGLFS_PHYSICAL_HEIGHT=240
export QT_QPA_EGLFS_DEPTH=32
export QT_QPA_EGLFS_INTEGRATION=eglfs_mali
export QT_QPA_EGLFS_ALWAYS_SET_MODE=1
export QT_QPA_EGLFS_FORCEVSYNC=0
# Fonts
export QT_QPA_FONTDIR=$QT_ROOT/fonts
export FONTCONFIG_PATH=$QT_ROOT/fonts
export FONTCONFIG_FILE=$FONTCONFIG_PATH/fonts.conf
# Qml
export QML_IMPORT_PATH=$QT_ROOT/qml
export QML2_IMPORT_PATH=$QT_ROOT/qml

# TsLib
# export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event0
# export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0
# export TSLIB_FBDEVICE=/dev/fb0
# export TSLIB_TSDEVICE=/dev/input/event0
# export TSLIB_CALIBFILE=/root/etc/ts
# export TSLIB_CONFFILE=/root/user/etc/ts.conf
# export TSLIB_PLUGINDIR=/root/user/lib
# QWS
# export QWS_MOUSE_PROTO=tslib:/dev/input/touchscreen0
# for debug
# export QT_QPA_EGLFS_DEBUG=1
# export QT_LOGGING_RULES=qt.qpa.*=true

# LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GPU_LIB_PATH:$QT_ROOT/lib
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GPU_LIB_PATH:$TSLIB_PLUGINDIR:$QT_ROOT/lib  
# ICONV
export LD_PRELOAD=/root/user/lib/preloadable_libiconv.so

# Init Fb Vo Devices


多国语言支持:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值