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
如果不太清楚如何在虚拟机安装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源码所在目录不能包含中文,当然如果你的桌面不包含中文,那就可以放桌面编译
接着进入解压出来的源码目录,找到qtbase/mkspecs/目录下的linux-arm-gnueabi-g++文件夹
将其复制一份,命名为arm-none-linux-gnueabi-g++(你所使用的交叉编译器)
sudo cp -r linux-arm-gnueabi-g++ arm-none-linux-gnueabi-g++
进入复制出来的的这个文件夹,找到qmake.conf这个文件夹,使用记事本打开,检查一下里面所用的编译器是不是变成了和你使用的交叉编译器一致
做完后就可以进行裁剪了
在这之前先在/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文件夹里生成所需的文件
其中bin目录下就有我们所需要的qmake文件
将lib和plugins两个文件夹直接打包拿出来备用,一定要打包,因为lib下的库文件是有链接属性的,如果直接复制出来会使其链接属性丢失
这个时候打开qt软件,依次打开工具——选项——构建和运行
首先设置编译器,添加一个C++编译器,如下图所示
接着手动添加一个版本,qmake就是刚刚编译出来的。
最后在构建套件下将我们设置好的编译器和版本添加进来
完成后qt的arm编译环境就算是搭好了,接下来随便放置一两个元件,编译后拿出来准备放到arm开发板上运行。
arm环境搭建
在你的arm开发板中建一个目录,/usr/local,其中再建两个文件夹qt、tslib,将之前压缩好的lib和plugins文件放到qt目录下解压,tslib也是同理
接着打开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环境相关推荐
- Fedora12下搭建Qt Creator的ARM开发环境 并 移植Qt4.6.2到Micro2440
Fedora12下搭建Qt Creator的ARM开发环境 并 移植Qt4.6.2到Micro2440 参考: http://hi.baidu.com/jiyeqian/blog/item/f46d2 ...
- Fedora9 下搭建Qt Creator的ARM开发环境并移植Qt4.6.3-books到mini2440
Fedora9 下搭建Qt Creator的ARM开发环境并移植Qt4.6.3-books到mini2440 分类: LINUX 2011-10-18 16:44:56 因为在搭建ARM的qte环境时 ...
- LINUX QT移植到ARM (zynq平台 qt5.4.1)
LINUX QT移植到ARM (zynq平台 qt5.4.1) 1.安装tslib 2.安装QT5.4.1 2.1下载QT5.4.1 2.2解压 2.3修改配置文件替换自己的编译器 2.4配置 2.4 ...
- 嵌入式Linux下的Qt环境搭建
嵌入式Linux下的Qt环境搭建 本文介绍如何在嵌入式Linux开发板上配置Qt运行环境,并进行Qt程序运行测试 一.tslib编译 要想Qt 支持触摸需要编译 tslib ,以生成触摸相关插件. t ...
- linux离线配置qt环境,Linux下配置QT环境
一.下载Qt源码包到本机,然后解压缩 #tar zxvf qt-x11-opensource-src-4.3.2.tar.gz -C /usr/local //将qt-x11-opensource-s ...
- linux 安装qt 4.6软件,QT学习之一:Linux下安装QT之版本qt-4.6.3
在Linux中分别安装应用于不同平台的QT:PC:嵌入式X86:ARM. 这三者PC版.嵌入式X86版和ARM版的区别主要体现在:当configure时分别加了不同的参数,具体区别是:PC平台:在li ...
- linux qt编译器路径,QT学习之一:Linux下安装QT之版本qt
在Linux中分别安装应用于不同平台的QT:PC:嵌入式X86:ARM. 这三者PC版.嵌入式X86版和ARM版的区别主要体现在:当configure时分别加了不同的参数,具体区别是:PC平台:在li ...
- linux下将qt程序打包成appimage程序
linux下将qt程序打包成appimage程序 一.环境准备 1.1下载linuxdeployqt的程序(打包qt程序的工具) https://github.com/probonopd/linuxd ...
- Linux下基于qt的视频监控系统
目录 一.原始需求 二.环境安装 2.1 qt安装 2.2 opencv安装 三.系统设计 3.1. 整体流程设计 3.2 .数据传输交互流程 3.3 .数据库设计 四.关键代码 4.1.如何实现通信 ...
最新文章
- python函数(三)
- cdi name 日志_CDI 2.0更新
- http 使用curl发起https请求
- org.apache.ibatis.builder.BuilderException: Could not find value method on SQL annotation
- NET 对象生命周期
- 部分xcode插件可能有新版本
- asp.net c# 常见面试试题总结汇总(含答案)
- c++两个文档匹配数据_MongoDB 数据库的命名、设计规范
- 机器学习中梯度下降算法的实际应用和技巧/李文哲
- 【Java】java 读写 json文件,java读写文件
- 分享个10.2越狱手贱删除cydia最糟糕情况的恢复方法
- 计算逆矩阵的三种方法
- OSChina 周日乱弹 ——朕与先生解战袍,芙蓉帐暖度春宵
- 目标检测综述(一:历史由来和古典目标检测的出现)
- stm32增加固件库工程
- More Grounded Image Captioning by Distilling Image-Text Matching Model
- 手机怎么模拟125k卡_NFC手机能模拟门禁卡吗?
- 保存图片到相册并打开微信扫一扫
- php 微信 公众 平台,微信公众平台代码详解-php语言(一)
- 全球与中国马铃薯面粉市场深度研究分析报告