移植qt5.3.1到arm

yutingliuyl yutingliuyl     2022-09-03     286

关键词:

近期刚入手一款开发板(比較低端,刚毕业工作还没一个月。穷屌丝一个)。在学校曾经都是用的是Friendly Arm的6410,使用的qt版本号是使用的最多的4.7.0版本号,入手的板子是4.7.4。qt5出来也有好长的时间了。当中提供了非常多的特性,所以这次移植的是qt5的最新版本号5.3.1。

第一步准备好源代码包,这里须要qt的源代码包。和tslib包。tslib我使用的是开发板提供的包。

设置交叉编译环境,我使用的是friendly arm的交叉工具。将其加到PATH中。

技术分享

然后看看是不是已经成功安装。

编译tslib,相关的资料能够找资料,这边就不再赘述了。

我把qt源代码包解压到~/software文件夹下,重命名为qte-5.3.1。我们是在arm板上移植,须要知道芯片的架构。我的是arm9,其架构是armv5te。我们进入/home/zhou/software/qte-5.3.1/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_RELEASE   +=-O2 -march=armv5te
QMAKE_CXXFLAGS_RELEASE +=-O2 -march=armv5te

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

//加入的内容
QMAKE_INCDIR += /home/zhou/software/tslib1.4-icool2416-v1.0/_install/usr/include  
QMAKE_LIBDIR += /home/zhou/software/tslib1.4-icool2416-v1.0/_install/usr/lib

# modifications to g++.conf
QMAKE_CC                = arm-linux-gcc//这边须要依据你安装来设计,我的是arm-linux-xx
QMAKE_CXX               = arm-linux-g++
QMAKE_LINK              = arm-linux-g++
QMAKE_LINK_SHLIB        = arm-linux-g++

# modifications to linux.conf
QMAKE_AR                = arm-linux-ar cqs
QMAKE_OBJCOPY           = arm-linux-objcopy
QMAKE_NM                = arm-linux-nm -P
QMAKE_STRIP             = arm-linux-strip
load(qt_config)

板子比較低端,仅仅能使用framebuffer,假设支持opengl es。能够使用eglfs。qt5将显示都做成了插件形式,这提供了很多其它的灵活性,具体的内容能够去看qt5的文档。

我编译使用的脚本

#!/bin/sh
echo ‘build Qt5 for embedded linux Author Zhou Xiang‘
mkdir _install
$PWD/configure -v
               -prefix $PWD/_install
               -release
               -make libs
               -xplatform linux-arm-gnueabi-g++
               -optimized-qmake
               -pch
               -qt-sql-sqlite
               -qt-libjpeg
               -qt-zlib
               -no-opengl
               -no-sse2
               -no-openssl
               -no-nis
               -no-cups
               -no-glib
               -no-xcursor -no-xfixes -no-xrandr -no-xrender
               -no-separate-debug-info
               -nomake examples -nomake tools
make && make install


你能够具体的依据自己的须要配置,事实上大部分的配置我都没看过。在qte-5.3.1目录下执行这个脚本即可。

然后将_install目录下的lib,plugin和include复制到你想放置的地方,我放置在opt/qte-5.3.1下。tslib生成usr目录,我直接复制到arm板的根目录下。对/etc/profile进行配置,例如以下

export TSLIB_ROOT=/usr
export QT_ROOT=/opt/qte-5.3.1
export TSLIB_TSDEVICE=/dev/touchscreen
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/usr/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
export QWS_MOUSE_PROTO=tslib:/dev/touchscreen
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$QT_ROOT/lib:$LD_LIBARAY_PATH
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
export LD_PRELOAD=/usr/lib/preloadable_libiconv.so:$TSLIB_ROOT/lib/libts.so
export QT_QPA_GENERIC_PLUGINS=tslib

配置ts.conf,假设像我这样,其在/usr/ect文件夹下

module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear

这样我们就配置好了。

以下就是交叉编译我们的项目。事实上非常easy。就是用qte-5.3.1/_install/bin/qmake一下,然后直接make就ok了。

一开试我执行程序./talkroom -platform linuxfb -plugin tslib总是报

Couldnt load module pthres                                                      
Error configuring                                                               
: No such file or directory
想了各种办法,然后发现。是libts.so没有载入,然后在LD_PRELOAD加入了

export LD_PRELOAD=/usr/lib/preloadable_libiconv.so:$TSLIB_ROOT/lib/libts.so。正常了。

qt5.3.1比較为客户着想,其将窗口边框去了,并且屏幕上没有鼠标的光标了。更加想提供给触摸屏是使用。

技术分享

技术分享

第二张图是点击的,其获得了焦点。






























































































从x86到arm,代码移植指北

最近ARM架构的处理器从云到端全面开花,比如苹果MAC上的ARM架构处理器M1MAX就堪称王炸,华为的鲲鹏系列ARM处理器也已经稳定服务了很长时间,目前业内有口皆碑,因此基于x86环境编写的程序也都需要考虑迁移到AR... 查看详情

从x86到arm,代码移植指北

最近ARM架构的处理器从云到端全面开花,比如苹果MAC上的ARM架构处理器M1MAX就堪称王炸,华为的鲲鹏系列ARM处理器也已经稳定服务了很长时间,目前业内有口皆碑,因此基于x86环境编写的程序也都需要考虑迁移到AR... 查看详情

移植wpa_supplicant2.5到arm开发板

 编译libnl1-1:./configure--host=arm-linux--enable-static--prefix=/usr/local/sslCC=arm-linux-gnueabihf-gcc编译时出现错误:../include/netlink-local.h:239:11:error:‘ULONG_MAX’undeclared(firstuseinthisfunction 查看详情

如何把51程序移植到arm?

如何把51的C语言程序移植到LM3SXXXX的arm7中,arm中提供了很多外设驱动程序(API函数),可是不太会用。本人新手希望能有人解惑,谢谢!  一、准备  busybox1.14.1  qt-embedded-linux-opensource-src-4.5.1  tslib1.4  gccversion4.3.2(Sou... 查看详情

Qt 5.3.1 TableView 未更新

】Qt5.3.1TableView未更新【英文标题】:Qt5.3.1TableViewnotupdating【发布时间】:2014-08-1313:33:22【问题描述】:最近我从Qt5.3.0升级到Qt5.3.1,并注意到当我对代理模型进行排序时,使用QSortFilterProxyModel作为其模型的TableView不再更新。您可... 查看详情

腾讯微服务框架tars成功移植至arm架构

TARS项目正式宣布已移植到Arm架构近日,腾讯宣布,其TARS微服务开发框架已成功移植至Arm??CPU架构。TARS是一个成熟的高性能微服务开发框架,因其高性能及具备完善的微服务治理方案而广为人知。现在,开发人员可以无缝编程和... 查看详情

mplayer移植到am335x开发板

参考《mplayer移植到arm心得》 ,http://blog.csdn.net/xiaohuangzhilin/article/details/52399746移植了mplayer1.0rc2版本 ./configure--prefix=/usr/local/mplayer--cc=arm-linux-gnueabihf-gcc--target=arm-linux--dis 查看详情

busybox移植udhcpd到arm板子实现路由热点

 下载最新版本:wgethttps://busybox.net/downloads/busybox-1.25.1.tar.bz2tar-jxvfbusybox-1.25.1.tar.bz2   一、交叉编译生成busybox万能小宝贝工具:  修改编译配置:  AdditonCrossfile:makemenuconf 查看详情

移植usbch340驱动到arm板,并作测试

一、安装usbserial驱动1.获得usbserial驱动2.加载usbserial驱动二、安装ch340驱动1.获得ch340驱动源码2.编译ch340驱动源码,生成ko驱动3.加载ch340驱动三、编写程序验证驱动能否正常使用linux-arm开发板在引出USB接口的时候,可外接U盘、键鼠... 查看详情

如何将linux下的qt程序移植到arm板上

...LinuxRedHat9.0下用Qt编写了一个简单的程序,如何将该程序移植到Arm开发板上,在arm开发板上也预装了Linux。我刚接触Linux和嵌入式开发,很多都不懂,希望各位高手不吝赐教,多谢用交叉编译工具(arm-linux-g++等)把你自己的qt程序用... 查看详情

交叉编译vim并移植到arm嵌入式linux系统

...基于busybox的文件系统中只带了vi工具,本文主要介绍怎么移植vim工具到基于busybox的制作的rootfs中。 一、编译环境:    Host机:ubuntu-16.10 查看详情

移植madplay到arm板(代码片段)

...后三个获取链接:https://sourceforge.net/projects/mad/files/二、移植以上几个库1、交叉编译zlib-1.2.3这个不细说,原因:我自己以前移植过了,在系统里存有编译好的zlib库文件,这百度也可以找到移植的方法2、交叉编译libid3tag-0.15.1b.tar.... 查看详情

从x86到arm,代码移植指北

...的情况看基于Java、Python等高级语言开发的程序是很容易移植的,问题的关键在于不少Java的包是调用C语言代码的,这时候就要考虑.so的动态库移植及内联的汇编语言移植,其中要点如下。C语言移植要点一.解决x86... 查看详情

从x86到arm,代码移植指北

...的情况看基于Java、Python等高级语言开发的程序是很容易移植的,问题的关键在于不少Java的包是调用C语言代码的,这时候就要考虑.so的动态库移植及内联的汇编语言移植,其中要点如下。C语言移植要点一.解决x86... 查看详情

linux移植usbch340驱动到arm板,并作测试(代码片段)

文章目录一、安装usbserial驱动1.获得usbserial驱动2.加载usbserial驱动二、安装ch340驱动1.获得ch340驱动源码2.编译ch340驱动源码,生成ko驱动3.加载ch340驱动三、编写程序验证驱动能否正常使用linux-arm开发板在引出USB接口的时候,... 查看详情

glmark2gpu跑分工具移植到arm实机上运行(代码片段)

...ws、安卓和linuxX86上跑,如果想在arm板子上跑需要自己移植。然后在网上搜了一圈都没有人移植过。因此只能自己去移植一把了。移植到arm实机上的代码请到我的github拉取:https://github.com/fanchenxinok/glmark2_arm顺便点个Star哦 ... 查看详情

itop-imx6ul实战项目:ssh服务器移植到arm开发板

...ows和虚拟机Ubuntu之间传输文件。其实在开发板上也是可以移植和安装ssh服务器,这样就可以通过网络,在Windows和开发板之间 查看详情

紧急求助,关于arm版本下qwt库移植出现的错误

...目标板qt运行库拷贝到目标板上,设置好环境变量,OK!QT移植成功!接下来的工作,是在宿主机上正常编写你的qt程序,然后生成一个对应x86架构的MakeFile,然后再将其中的编译器选项g++(gcc)改成arm-linux-g++(arm-linux-gcc),保存,然后m... 查看详情