目录
前言:
本文章是移植qt库到imx6ull上面能够运行,同时移植tslib库(触摸屏)到imx6ull上面,适用于大部分arm板子,适合新手小白,小编自己也摸索了2天,结合众多大佬的文章,希望能够帮助到各位。
环境配置:
ubantu16.0
开发板:韦东山imx6ull_mini
(什么板子不重要都一样,主要是板子编译器不一样,参考了好多正点原子的例子)
1.资料准备:
tslib-1.21.tar.bz2 :arm板子触摸屏环境配置
qt-everywhere-src-5.12.9 :qt源码用于arm板子 qt环境配置
qt-opensource-linux-x64-5.12.9.run :qt软件安装包
链接: https://pan.baidu.com/s/1YQ3QKRJiZajrYvvD_ODBIA 提取码: eiq7
2.编译tslib库
tslib 是 Linux 下的一个触摸屏(Touch Screen)驱动库,它可以很好地支持各种不同类型的触摸屏设备,并提供标准的输入接口。在编译 Qt 时,启用 tslib 特性可以使得 Qt 应用程序能够更好地支持触摸屏交互,从而提升应用程序在嵌入式设备上的用户体验。
对于 ARM 架构下的 Qt 环境,一般都是在嵌入式设备上运行 Qt 应用程序,而嵌入式设备常常会使用触摸屏进行人机交互,因此 tslib 可以说是嵌入式 Qt 应用开发中必不可少的一个库。
1.把tslib压缩包传到ubantu里面,你放在哪个文件夹都可以,我直接放在/hom/book里面
2.在book目录下解压tslib
tar xvf tslib-1.21.tar.bz2
3.编译tslib库之前需要安装一些依赖文件
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool
4.然后执行以下编译命令
(但是要注意把交叉编译链换成自己arm板子编译链和tslib库换成自己路径)
./configure --host=arm-buildroot-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-buildroot-linux-gnueabihf.cache -prefix=/home/book/tslib-1.21/tslib-arm
make
make install
./configure --host=arm-buildroot-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-buildroot-linux-gnueabihf.cache -prefix=/home/book/tslib-1.21/tslib-arm
arm-buildroot-linux-gnueabihf :是小编自己arm编译工具链
/home/book/tslib-1.21 :是自己的tslib解压的路径
tslib-arm :编译tslib库生成的东西存放在这个文件夹,可以自己命名,后面要将这个文件夹cp到arm板子里面去
3.编译qt库源码
1、上传源码到ubantu /home/book 路径(可以自选)
2.解压qt源码
tar -xvf qt-everywhere-src-5.12.9.tar.xz
3.修改qt源码中make.config
gedit qt-everywhere-src-5.12.9/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
源码:
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a # 自己的cpu型号
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a #
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC = arm-buildroot-linux-gnueabihf-gcc # linux自己的交叉编译器
QMAKE_CXX = arm-buildroot-linux-gnueabihf-g++
QMAKE_LINK = arm-buildroot-linux-gnueabihf-g++
QMAKE_LINK_SHLIB = arm-buildroot-linux-gnueabihf-g++
# modifications to linux.conf
QMAKE_AR = arm-buildroot-linux-gnueabihf-ar cqs # linux自己的交叉编译器
QMAKE_OBJCOPY = arm-buildroot-linux-gnueabihf-objcopy
QMAKE_NM = arm-buildroot-linux-gnueabihf-nm -P
QMAKE_STRIP = arm-buildroot-linux-gnueabihf-strip
load(qt_config)
需要注意的是arm-buildroot-linux-gnueabihf 是自己arm 板子编译工具链,不然后面会有bug
4.进入qt-everywhere-src-5.12.9文件夹下 配置一个编辑文件 名字可以自己命名
cd qt-everywhere-src-5.12.9
gedit autoconfigure.sh
源码
./configure -prefix /home/book/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/book/tslib-1.21/tslib-arm/include \
-L/home/book/tslib-1.21/tslib-arm/lib \
-recheck-all
要注意其中三处:
1./home/book/qt-everywhere-src-5.12.9/arm-qt qt库编译输出的路径
2./home/book/tslib-1.21/tslib-arm/include \ tsblib 头文件路径
3./home/book/tslib-1.21/tslib-arm/lib \ tslib 库文件路径
5、安装g++
sudo apt-get install g++
6、赋予脚本可执行权限,然后执行autoconfig.sh脚本
chmod +x autoconfigure.sh
./autoconfigure.sh
如果出现
这样就算编译成功,然后才能执行下面的
如果出错就百度/chatgpt解决,小编出现过这样的错误
ERROR: Feature ‘tslib‘ was enabled, but the pre-condition‘libs.tslib‘ failed.
这样就是编译tslib时工具链不是自己板子的工具链
7、没有报错就在执行编译命令
make -j4
要等30min - 1h左右
8、安装
make install
没有权限就加sudo
安装成功就会生成一个arm-qt文件
就是之前配置时make.config自己命名的
到这里已经完成一大半了,接下来就把生成的arm-qt 和 tslib-arm 复制到自己的开发板上面
4.配置arm板子qt 和 tslib 环境
1、首先把两个文件夹复制到unbantu /home/book/nfs_rootfs下面,然后arm板子挂载nfs 文件系统就可以和ubantu 共享这个文件夹,然后就可以把文件复制到arm板子上面
板子挂载文件系统
mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt
注意:这是小编自己复制文件的方法,你们有自己的传输ubantu 文件传输到arm板子上就不必理会这上面的方法
2、将开发板/mnt下的arm-qt 和 tslib-arm 文件复制到 /usr/lib下面
cp -r tslib-arm/ /usr/lib/
cp -r arm-qt/ /usr/lib/
3、配置开发板的环境变量
vi /etc/profiel
源码:
export QT_ROOT=/usr/lib/arm-qt
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event4
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
然后刷新生效:
source /etc/profile
4.测试板子的arm-qt 和 tslib-arm 库是否可用
1、/usr/lib/arm-qt/examples/widgets/animation/animatedtiles/animatedtiles
//运行编译的示例
2、在tslib-arm/bin目录下运行,点击arm板子屏幕会出现下面
./ts_calibrate
到这里arm板子的qt和触摸屏的环境就全部配置好了,接下来就配置linux 下qt软件环境
5.qt安装和配置
1、把qt软件放在ubantu 任何目录下 /home/book
2、运行qt安装包 一定要加可执行权限,不然运行不了
chmod +x qt-creator-opensource-linux-x86_64-5.0.2.run
./qt-creator-opensource-linux-x86_64-5.0.2.run
3.断网直接跳过注册
设置安装路径自己安排
工具小编是全选的(我的内存500g),这是我安装之后又安一次的图和我第一次不一样,不要误会
后面直接同意,然后安装,qt页面应该会自动谈出来,如果没有那就直接去安装的目录下自己启动
小编的是在 /opt/下面 ,先到自己安装qt软件路径下执行下面的命令
cd Qt5.12.9/Tools/QtCreator/bin
./qtcreator.sh
4、qt 软件arm编译环境配置
1、点击Tools->Options
点击Compliers->add->Gcc->c 注意:每次配置为要点击apply按钮
name:自己命名
compiler path: 选择自己板子编译工具链所在的位置的gcc工具链
Browse到下面图片的工具链
同样的方法添加一个add->Gcc->g++
2、点击QT Versions-add ->Browse到编译qt库源码生成的arm-qt/bin/qmake 点击open
3、kit配置:点击kit->
Name:自己命名
Compiler:刚刚自己配置的编译工具链
Qt version: 自己刚刚配置的
点击apply 和 OK
关闭QT
6.新建QT工程
在终端运行:<安装目录>/bin/qtcreator.sh
点击projects New
自己命名
选择qt存放的路径
选择qmake
两个套件都选
Fininsh 就已经建好了一个qt项目
点击mainwidow.ui进入图像见面
把按钮拖出来
保存文件
File->Save all
点击Dubug换编译器arm-qt5.12.9
点击绿色的按钮编译就行
编译出来的文件就可以放在arm板子上面运行
7.arm板子运行第一个qt程序
1、找到可执行test文件
qt_project->build-test-arm-qt5_12_9-Debug->test 复制到arm板子哪里都可以,我直接复制到
共享目录下。
运行qt程序:
现象:
如果不显示文字和字母就添加字库到/usr/share/fonts目录下
直接复制进去就行
cd /usr/share/fonts
字库获取方式:自己电脑C盘->windows->fonts就会有
8.关闭arm板子出厂gui程序
适用于韦东山 imx6ull_mini板子出厂gui关闭,其他的板子类似
mv /etc/init.d/S05lvgl /root && mv /etc/init.d/S99myirhmi2 /root &&reboot
开启出厂gui
mv /root /etc/init.d/S05lvgl && mv /root /etc/init.d/S99myirhmi2 /root && reboot
到这里就完成了!,希望给小编一个点赞和收藏
下一篇文章会写qt 点亮 imx6ull板子led灯(超简单方式)。
参考博客:
https://blog.csdn.net/vickycheung3/article/details/82182136
将windows下编写的QT代码在arm开发板(imx6ull)上运行_qt程序怎么在开发板上运行-CSDN博客
https://blog.csdn.net/weixin_44236302/article/details/136393573
标签:qt,skip,ARM,linux,tslib,imx6ull,板子,arm,QT From: https://blog.csdn.net/lx3022949056/article/details/140229034