首页 > 其他分享 >QT之ARM平台的移植

QT之ARM平台的移植

时间:2024-01-18 14:24:13浏览次数:29  
标签:QT skip ARM linux tslib arm 移植 qt

  在开发板中运行QT程序的基本条件是具备QT环境,那么QT的移植尤为重要,接下载我将和小伙伴们一起学习QT的移植。

一、准备材料

  1. tslib源码
  2. qt-everywhere-src-5.12.9.tar.xz源码
  3. arm开发版

二、获取安装包

  1. tslib源码的git获取地址是:https://github.com/libts/tslib
  2. qt-everywhere-src-5.12.9.tar.xz源码的获取地址是:https://download.qt.io/archive/qt/5.12/5.12.9/single/

三、编译tslib

  由于QT触摸需要相应的触摸插件,而嵌入式QT一般使用的都是tslib库,所以在编译QT之前需要将tslib库编译一下,在编译QT时需要用到。

  1. 将tslib源码拷贝至虚拟下进行解压
 
  tar vxf tslib-1.21.tar.bz2
  cd tslib-1.21
 
  1. 安装所需软件以免编译时出现错误
 
  sudo apt-get update
  sudo apt-get install autoconf automake libtool
 
  1. 生成Makefile
 
  ./autogen.sh
 
  1. 配置安装路径
 
  ./configure --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=/home/tslib-1.21/arm-tslib
 

编译并安装

 
  make
  make install
 

四、编译QT

  1. qt-everywhere-src-5.12.9.tar.xz源码拷贝至虚拟机并解压
 
  tar vxf qt-everywhere-src-5.12.9.tar.xz
  cd qt-everywhere-src-5.12.9
 
  1. 修改 qmake.conf文件
 
  vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
 

修改内容如下:

 
  #
  # qmake configuration for building with arm-linux-gnueabi-g++
  #
   
  MAKEFILE_GENERATOR = UNIX
  CONFIG += incremental
  QMAKE_INCREMENTAL_STYLE = sublib
   
  QT_QPA_DEFAULT_PLATFORM = linuxfb
  QMAKE_CFLAGS += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard
  QMAKE_CXXFLAGS += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard
   
  include(../common/linux.conf)
  include(../common/gcc-base-unix.conf)
  include(../common/g++-unix.conf)
   
  # modifications to g++.conf
  QMAKE_CC = arm-linux-gnueabihf-gcc
  QMAKE_CXX = arm-linux-gnueabihf-g++
  QMAKE_LINK = arm-linux-gnueabihf-g++
  QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++
   
  # modifications to linux.conf
  QMAKE_AR = arm-linux-gnueabihf-ar cqs
  QMAKE_OBJCOPY = arm-linux-gnueabihf-objcopy
  QMAKE_NM = arm-linux-gnueabihf-nm -P
  QMAKE_STRIP = arm-linux-gnueabihf-strip
  load(qt_config)
   
 

  1. 配置编译选项
    可以通过./configure -help查看可配置的选项,由于需要配置的选项比较多,所以新建一个脚本存放配置选项。
 
  vim autoconfigure.sh
   
 

文件中的配置内如如下所示:

 
  ./configure -prefix /home/linux/tool/qt-everywhere-src-5.12.9/arm-qt \
  -opensource \
  -confirm-license \
  -release \
  -strip \
  -shared \
  -xplatform linux-arm-gnueabi-g++ \
  -optimized-qmake \
  -c++std c++11 \
  --rpath=no \
  -pch \
  -skip qt3d \
  -skip qtactiveqt \
  -skip qtandroidextras \
  -skip qtcanvas3d \
  -skip qtconnectivity \
  -skip qtdatavis3d \
  -skip qtdoc \
  -skip qtgamepad \
  -skip qtlocation \
  -skip qtmacextras \
  -skip qtnetworkauth \
  -skip qtpurchasing \
  -skip qtremoteobjects \
  -skip qtscript \
  -skip qtscxml \
  -skip qtsensors \
  -skip qtspeech \
  -skip qtsvg \
  -skip qttools \
  -skip qttranslations \
  -skip qtwayland \
  -skip qtwebengine \
  -skip qtwebview \
  -skip qtwinextras \
  -skip qtx11extras \
  -skip qtxmlpatterns \
  -make libs \
  -make examples \
  -nomake tools -nomake tests \
  -gui \
  -widgets \
  -dbus-runtime \
  --glib=no \
  --iconv=no \
  --pcre=qt \
  --zlib=qt \
  -no-openssl \
  --freetype=qt \
  --harfbuzz=qt \
  -no-opengl \
  -linuxfb \
  --xcb=no \
  -tslib \
  --libpng=qt \
  --libjpeg=qt \
  --sqlite=qt \
  -plugin-sql-sqlite \
  -I/home/tslib-1.21/arm-tslib/include \
  -L/home/tslib-1.21/arm-tslib/lib \
  -recheck-all
   
 

注意:./configure -prefix /home/linux/tool/qt-everywhere-src-5.12.9/arm-qt 是个人的QT安装路径
-I/home/tslib-1.21/arm-tslib/include \ 是个人的tslib安装路径

  1. 更改脚本执行权限并执行文件
 
  chmod +x autoconfigure.sh
  ./autoconfigure.sh
 
  1. 开始编译并安装
 
  make -j 16
  make install
 

五、移植tslib和QT到开发版

  1. 将编译生成的arm-tslib文件拷贝到开发版的'/usr/local',路径下并配置环境变量
 
  export TSLIB_ROOT=/usr/local/arm-tslib
  export TSLIB_CONSOLEDEVICE=none
  export TSLIB_FBDEVICE=/dev/fb0
  export TSLIB_TSDEVICE=/dev/input/event1
  export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
  export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
  export TSLIB_CALIBFILE=/etc/pointercal
  export LD_PRELOAD=$TSLIB_ROOT/lib/libts.so
 
  1. 将编译生成的arm-qt文件拷贝到开发版的'/usr/local',路径下并配置环境变量
 
  export QT_ROOT=/usr/local/arm-qt
  export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1
  export QT_QPA_FONTDIR=/usr/share/fonts
  export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
  export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
  export QT_PLUGIN_PATH=$QT_ROOT/plugins
  export LD_LIBRARY_PATH=$QT_ROOT/lib:$QT_ROOT/plugins/platforms
  export QML2_IMPORT_PATH=$QT_ROOT/qml
  export QT_QPA_FB_TSLIB=1
   
 
  1. 使能环境变量
 
  source /etc/profile
 
  1. 运行qt的测试案例
 
  /usr/lib/arm-qt/examples/widgets/animation/animatedtiles/animatedtiles
 

自己测试的效果如下图示

问题

此方法是适用于制作生成的根文件系统,如果是标准的ubuntu系统时,无需对QT进行移植,因为在ubuntu系统中自带QT的运行环境,直接ubuntu根文件系统的小伙伴可以在路径中'/usr/lib/arm-linux-gnueabihf'查看QT库是否存在。

 
  ls libQt5*
 


在路径'/usr/lib/arm-linux-gnueabihf/qt5'中可以看到相关文件

参考文献

tslib移植arm及使用:https://www.cnblogs.com/silencehuan/p/11207996.html
QT5.9移植:https://www.jianshu.com/p/de6b0bc7893c
正点原子的《I.MX6U移植 Qt5.12.9 V1.1》简称手册

标签:QT,skip,ARM,linux,tslib,arm,移植,qt
From: https://www.cnblogs.com/kn-zheng/p/17972407

相关文章

  • python pyqt6 QComboBox 圆角边框
    圆角边框周围显示黑色直角QComboBox 新增如下设定即可xxx_source.view().window().setWindowFlag(Qt.WindowType.NoDropShadowWindowHint)xxx_source.view().window().setWindowFlag(Qt.WindowType.FramelessWindowHint)xxx_source.view().window().setAttribute(Qt.Widge......
  • #星计划# OpenHarmony NAPI技术简介
    作者:廖家兴简介NAPI(NativeAPI)是OpenHarmony系统中的一套原生模块扩展开发框架,它基于Node.jsN-API规范开发,为开发者提供了JavaScript与C/C++模块之间相互调用的交互能力。可以在NodeJs官网查看各种NAPI接口定义说明。NAPI作用OpenHarmony系统可以将框架层丰富的模块功能通过j......
  • Qt/C++自定义界面大全/20套精美皮肤/26套精美UI界面/一键换肤/自定义颜色/各种导航界
    一、前言这个系列对应自定义控件大全,一个专注于控件的编写,一个专注于UI界面的编写,程序员有两大软肋,一个是忌讳别人说自己的程序很烂很多bug,一个就是不擅长UI,基本上配色就直接rgb,对于第一点,只要放松心态,直面自己的不足,不断改进,才能问鼎武林至尊。至于第二点,因为程序员擅长的是逻辑......
  • Python、Anaconda、PyCharm和终端的关系及其作用
    Python是一种高级编程语言,广泛应用于数据分析、科学计算、Web开发等领域。为了便于开发和运行Python程序,我们通常会使用一些工具和环境。其中,Anaconda是一个Python发行版,提供了大量的科学计算和数据处理库;PyCharm是一款强大的Python集成开发环境(IDE);终端(或命令行)则是执行Python代码......
  • 解决PyCharm显示"No Python Interpreter configured for the project"的问题
    PyCharm提供了许多功能和工具,以帮助开发人员编写、调试和运行Python程序。但是,在启动新项目或打开现有项目时,有时会出现"NoPythonInterpreterconfiguredfortheproject"的错误提示。这意味着PyCharm无法找到配置的Python解释器,导致无法正常运行代码。下面将介绍可能导致此问......
  • python pyqt6 颜色弹窗 QColorDialog
     defsetColor(self):#避免窗口置顶后,Dialog被主窗口覆盖,所以需要传递self#设定默认颜色使用getColor的第一个参数(使用setCurrentColor不生效)#"选择颜色"为Dialog弹窗的标题#设定QColorDialog.ColorDialogOption.ShowAlphaChanne......
  • CH395实现MQTT应用(补充说明)
    本文是对该篇文章的补充CH395+EMQX实现MQTT应用(Windows系统)-lqlq123-博客园(cnblogs.com)1.切换中文版在设置中可以选择EMQX使用语言及样式主题 2.监控主题及消息数据第一种方法:点击左侧监控,下拉可以直接看到所有客户端的数据详情第二种方法:想要监控特......
  • harmonyos 02 app创建,页面跳转
        HDF             添加button导入 router  返回按钮   指定返回的页面      ......
  • harmonyos01
             https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/start-overview-0000001478061421-V2https://developer.huawei.com/consumer/cn/apphttps://developer.harmonyos.com/ ......
  • QT与VTK结合
    QT与VTk结合最简单的方法在代码中实例化vtkwidget,并设置其渲染窗口setRenderWindow,如下所示:#include"vtkGenericOpenGLRenderWindow.h"#include"QVTKOpenGLNativeWidget.h"QVTKOpenGLNativeWidget*qvtkWidget=newQVTKOpenGLNativeWidget();vtkGenericOpenGLRend......