linux下将QT移植至arm环境

这篇具有很好参考价值的文章主要介绍了linux下将QT移植至arm环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

讲下整个项目流程,我们的目标是把qt编出来程序放在arm开发板上面跑,首先下载QT源码和tslib源码(QT源码编译和QT程序运行需要tslib库的支持),在虚拟机里使用交叉编译将QT源码编译安装,会生成arm环境的库文件和qmake,然后在虚拟机里安装qt的Linux版本,安装好后配置qt的编译环境,将编译器改成交叉编译器,添加arm环境的qmake即可。接下来随便建个qt工程,用arm编译环境编出程序,将程序放入arm开发板,这个时候还不能运行,需要将前面编译出来的qt和tslib的库文件也放到开发板,最后设置好环境变量,做完触控校准就可以运行qt程序了。

源码下载

QT源码和QT软件下载

Index of /archive/qt

选择好适当的版本,点进去,其中single文件下是QT源码,我这里使用的是版本是QT5.9.6

linux下将QT移植至arm环境

如果不太清楚如何在虚拟机安装QT可参考我的这篇文章

linux环境下安装QT超详细_linux qt_yuansec的博客-CSDN博客

tslib源码下载

 https://gitlab.com/tslib/tslib/-/archive/1.4/tslib-1.4.tar.gz 

这里使用的是1.4版本

如果不想编译源码,我将已经编好了的tslib源码和qt源码的库文件放在了我的gitee,可直接下载使用

qt移植arm: linux下qt搭建交叉编译环境,且在arm环境运行程序 (gitee.com)

交叉编译器下载

我使用的交叉编译器是arm-none-linux-gnueabi-gcc,使用的是linux 解压版2014.05-29版本

【ARM-Linux开发】arm-none-Linux-gnueabi-gcc下载安装 - ZhangPYi - 博客园 (cnblogs.com)

不会安装的可以参考我的这篇文章

ubuntu安装交叉编译器arm-linux-gcc_yuansec的博客-CSDN博客_arm gcc4.6.4

源码编译

这里就不讲tslib的编译了,这个比较简单,你可以直接用我编译好的,也没有影响(不过要确保交叉编译器一致的情况下才能使用,我用的arm-none-linux-gnueabi-gcc)

重点讲一下qt源码的编译,在根目录下创建一个文件夹 /opt,将下好的qt源码包复制到这个目录下解压出来,为什么不能直接放桌面呢,因为qt源码所在目录不能包含中文,当然如果你的桌面不包含中文,那就可以放桌面编译

linux下将QT移植至arm环境

接着进入解压出来的源码目录,找到qtbase/mkspecs/目录下的linux-arm-gnueabi-g++文件夹

linux下将QT移植至arm环境

将其复制一份,命名为arm-none-linux-gnueabi-g++(你所使用的交叉编译器)

sudo cp -r linux-arm-gnueabi-g++ arm-none-linux-gnueabi-g++

进入复制出来的的这个文件夹,找到qmake.conf这个文件夹,使用记事本打开,检查一下里面所用的编译器是不是变成了和你使用的交叉编译器一致

linux下将QT移植至arm环境

 做完后就可以进行裁剪了

在这之前先在/opt目录下建一个文件夹qt5(编译后生成库的文件目录)

再将tslib的库文件也放到/opt目录下

然后在源码根目录下建一个脚本auto.sh,添加以下代码

#!/bin/sh
./configure \
-v \
-prefix /opt/qt5 \  //生成路径
-release \
-opensource \
-no-accessibility \
-make libs \
-xplatform arm-none-linux-gnueabi-g++ \  //你的编译器
-optimized-qmake \
-pch \
-qt-zlib \
-tslib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-pkg-config \
-no-separate-debug-info \
-I/opt/tslib1.4/include -L/opt/tslib1.4/lib  //tslib的库

接下来直接执行脚本,进行裁剪

./auto.sh

 接下来就是编译,安装

make -j4
sudo make install

完成后会在之前建的qt5文件夹里生成所需的文件

linux下将QT移植至arm环境

其中bin目录下就有我们所需要的qmake文件

linux下将QT移植至arm环境

 将lib和plugins两个文件夹直接打包拿出来备用,一定要打包,因为lib下的库文件是有链接属性的,如果直接复制出来会使其链接属性丢失

这个时候打开qt软件,依次打开工具——选项——构建和运行

首先设置编译器,添加一个C++编译器,如下图所示

linux下将QT移植至arm环境

接着手动添加一个版本,qmake就是刚刚编译出来的。

linux下将QT移植至arm环境

 最后在构建套件下将我们设置好的编译器和版本添加进来

linux下将QT移植至arm环境

完成后qt的arm编译环境就算是搭好了,接下来随便放置一两个元件,编译后拿出来准备放到arm开发板上运行。

arm环境搭建

在你的arm开发板中建一个目录,/usr/local,其中再建两个文件夹qt、tslib,将之前压缩好的lib和plugins文件放到qt目录下解压,tslib也是同理

linux下将QT移植至arm环境

 接着打开arm开发板的/etc/profile文件,添加以下内容

export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM
export TS_ROOT=/usr/local/tslib    //放入的tslib目录
export LD_LIBRARY_PATH=$TS_ROOT/lib:$LD_LIBRARY_PATH
export PATH=$TS_ROOT/bin:$PATH
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=$TS_ROOT/etc/pointercal
export TSLIB_CONFFILE=$TS_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TS_ROOT/lib/ts
# qt
export QT_ROOT=/usr/local/qt    //放入的qt目录
export LD_LIBRARY_PATH=$QT_ROOT/lib/:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0:inverty
export QT_QPA_FB_TSLIB=1
export LD_PRELOAD=$TS_ROOT/lib/libts.so

 添加完设置环境变量

source /etc/profile

 这个时候程序还不能跑起来,初次需要做触控校准设置,执行tslib/bi目录下的ts_calibrate程序

./usr/local/tslib/bin/ts_calibrate

完成触控校准后,就可以将你编好的qt程序放到arm开发板里执行了(注意别忘了赋权限,不然程序没有权限执行不了)。

linux下将QT移植至arm环境文章来源地址https://www.toymoban.com/news/detail-401418.html

到了这里,关于linux下将QT移植至arm环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ARM-系统移植(开发环境搭建)

    首先保证ubuntu连接网络成功 1. 安装步骤 作用:完成ubuntu和开发板之间传输文件 1)安装tftp服务器的安装包 sudo apt-get install tftpd-hpa  tftp-hpa        tftpd-hpa : 服务器端        tftp-hpa : 客户端   2)在家目录下,创建一个文件夹 tftpboot ,并且添加最高权限 cd ~ mkdir  tftpboot ch

    2024年02月07日
    浏览(52)
  • ubuntu交叉编译Qt-5库并移植ARM开发板

    前言:本文将介绍Qt5源码方式的交叉编译及安装 下载源码包:qt-everywhere-src-5.12.8.tar.xz 官网下载网址:Index of / 依次选择: 【official_releases】 =【qt】 =【5.12】 =【5.12.8】 =【single】 =【qt-everywhere-src-5.12.8.tar.xz】 先解压QT库压缩包出来,并进入解压出来的库目录。 接下来请按以

    2023年04月08日
    浏览(41)
  • QT学习笔记-Linux ARM环境下实现QT程序通过ODBC驱动访问SQLServer数据库

    在嵌入式系统中使用QT开发上位机应用时不可避免的会涉及访问各种数据库的场景,而服务端数据库的种类则有多种可能(Oracle、Postgresql、MySql、SQLServer),本文就介绍一下如何实现在Linux Arm环境下实现QT程序通过ODBC驱动访问SQLServer数据库的。 开发环境操作系统:windows10专业

    2024年02月12日
    浏览(53)
  • 嵌入式Linux:ARM驱动+QT应用+OpenCV人脸识别项目实现

            这个项目主要分为两部分,客户端(ARM板端)负责利用OpenCV采集人脸数据,利用TCP将人脸数据发送给服务器,然后服务器根据人脸数据进行人脸识别,将识别后的结果返还给客户端,客户端对人脸数据进行解析,得到正确的人脸数据后,打开门锁。门锁涉及硬件操作

    2024年02月10日
    浏览(44)
  • 4.Linux下Cmake交叉编译Qt项目到Jetson Orin Nano(arm)

    由于3:Ubuntu上配置QT交叉编译环境并编译QT程序到Jetson Orin Nano(ARM)_月上林梢的博客-CSDN博客  这一篇文章只用手动配置,一直在点、点、点。比较 LOW,现在在Ubuntu上使用Cmake实现交叉编译QT程序到Jetson Orin Nano上。 提醒: 我的工作环境是 Visual Studio+QT+arm 由于 Ubuntu 下没有V

    2024年02月12日
    浏览(42)
  • QT学习笔记-oracle oci数据库驱动交叉编译并移植到ARM开发板

    在上一文《QT学习笔记-QT安装oracle oci驱动》中介绍了在Windows环境下使用QT访问oracle数据库时遇到驱动无法加载问题的解决办法,大体思路是对QT源码中数据库驱动的源码oci进行编译,要想通过编译需要依赖对应数据库的头文件和库(可以通过下载oracle instant client),编译通过

    2024年02月13日
    浏览(56)
  • LuaJit交叉编译移植到ARM Linux

    Lua与LuaJit的主要区别在于LuaJIT是基于JIT(Just-In-Time)技术开发的,可以实现动态编译和执行代码,从而提高了程序的运行效率。而Lua是基于解释器技术开发的,不能像LuaJIT那样进行代码的即时编译和执行。因此,在运行速度方面,LuaJIT要比Lua快得多。此外,LuaJIT还支持更多的

    2024年02月05日
    浏览(38)
  • Linux交叉编译opencv并移植ARM端

    Linux交叉编译opencv并移植ARM端 - 知乎 目标平台为arm7l,此为32位ARM架构,要安装合适的编译器 注意:64位ARM架构的编译器与32位ARM架构的编译器不能通用 opencv的交叉编译工具链在../opencv3.2.0/platforms/linux 路径下,linux文件夹下是一些.cmake文件,对应不同的移植对象,我需要在rv

    2024年02月12日
    浏览(44)
  • ffplay——QT项目移植

    一、ffmpeg源码编译 参考: https://blog.csdn.net/sgzed/article/details/119850119 在生成时做了一些修改: ./configure --toolchain=msvc --enable-shared --enable-postproc --enable-gpl --prefix=windows 二、对文件做调整 ffplay只需要三个文件,cmduti.c、cmduti.h、ffplay.c 调整ffplay.c文件,创建新的头文件用来声明ff

    2024年02月14日
    浏览(32)
  • 基于嵌入式linux的OpenSSL源码移植(基于arm64)

    SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准。

    2024年02月11日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包