赞
踩
需要 配置好 arm 的交叉编译工具了
在 arm 中,qt 控制显示屏和触摸屏用的是 tslib,所以需要移植 tslib
编译:
获得源码后解压(git 地址为 https://github.com/kergoth/tslib)
进入源码目录
配置:
./configure --host=arm-linux-gnueabihf --prefix=$PWD/tslib-arm
make
make install
下载 Qt5.12.9 源码(https://download.qt.io/)
wget https://download.qt.io/archive/qt/5.12/5.12.9/single/qt-everywhere-src-5.12.9.tar.xz
解压并进入目录
修改 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)
配置编译选项
./configure -prefix /home/luo/tool/qt-everywhere-src-5.12.9/qt-arm \ #根据自己的目录改(设置编译输出路径)
-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/luo/linux/tool/tslib-1.21/tslib-arm/include \ #根据自己的目录改(tslib 编译输出的头文件路径)
-L/home/luo/linux/tool/tslib-1.21/tslib-arm/lib \ #根据自己的目录改(tslib 编译输出的库文件路径)
-recheck-all
赋予 autoconfigure.sh 可执行权限sudo chmod 777 autoconfigure.sh
执行前先安装 g++sudo apt-get install g++
执行配置文件./autoconfigure.sh
开始编译,执行 make
开始安装,执行 make install
将编译好的 tslib 和 qt 移植到开发板上
烧写文件系统到开发板
如果 nfs 挂载文件系统,在运行 qt 程序时,可能会网络中断
移植 tslib 到文件系统
将编译安装好的 tslib-arm 打包(tar -cjf ./tslib-arm.tar.bz2 tslib-arm
),可在烧写文件系统时就将 tslib-arm.tar.bz2 放到文件系统,或者通过 u 盘烤到开发板上,然后将 tslib-arm.tar.bz2 解压到 /usr/lib 下(tar -xjf tslib-arm.tar.bz2 -C /usr/lib
)
配置 tslib 环境变量:
打开/etc/ts.conf文件,找到下面这一行:module_raw input,如果有注释,就去掉
打开/etc/profile 文件,在里面加入如下内容:
export TSLIB_ROOT=/usr/lib/tslib-arm
export TSLIB_TSDEVICE=/dev/input/event1 #表示触摸设备文件,这里设置为/dev/input/event1,这个要根据具体情况设置
export TSLIB_CALIBFILE=/etc/pointercal #表示校准文件,如果进行屏幕校准的话校准结果就保存在这个文件中,这里设置校准文件为/etc/pointercal,此文件可以不存在,校准的时候会自动生成。
export TSLIB_CONFFILE=/etc/ts.conf #触摸配置文件,文件为/etc/ts.conf,此文件在移植 tslib 的时候会生成。
export TSLIB_PLUGINDIR=/lib/ts #表示 tslib 插件目录位置,目录为/lib/ts。
export TSLIB_CONSOLEDEVICE=none #表示控制台设置,这里不设置,因此为 none
export TSLIB_FBDEVICE=/dev/fb0 #屏幕驱动文件
测试:
source /etc/profile # 使能环境变量
./usr/lib/tslib-arm/bin/ts_test_mt # 运行 ts_test 测试触摸是否正常,点击界面的Draw测试
移植 Qt
将编译安装好的 qt-arm 打包(tar -cjf ./qt-arm.tar.bz2 qt-arm
),可在烧写文件系统时就将 qt-arm.tar.bz2 放到文件系统,或者通过 u 盘烤到开发板上,然后将 qt-arm.tar.bz2 解压到 /usr/lib 下(tar -xjf qt-arm.tar.bz2 -C /usr/lib
)
配置 qt 环境变量:
打开/etc/profile 文件,在里面加入如下内容:
export QT_ROOT=/usr/lib/qt-arm
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_PATH=$QT_ROOT/qml
export QT_QPA_FB_TSLIB=1
测试:
source /etc/profile # 使能环境变量
./usr/lib/qt-arm/examples/widgets/animation/animatedtiles/animatedtiles
要用带桌面的 Linux,不然运行 Qt Creator 会有麻烦
下载 Qt Creator
wget http://download.qt.io/archive/qt/5.12/5.12.9/qt-opensource-linux-x64-5.12.9.run
赋予可执行权限,然后运行
chmod 777 qt-opensource-linux-x64-5.12.9.run
sudo ./qt-opensource-linux-x64-5.12.9.run # 建议加 sudo,否则安装在当前目录下。
不出意外,会出现安装 Qt 的界面
勾选安装选项时,除了 android 的,其他都选上
运行 Qt
可用 命令行(/opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.sh &
)
可用图形界面
配置 ARM 平台的Qt Creator Kits
配置 qmake
配置 C++ 编译器
配置 Kits
配置完成
配置好网络接口,可利用 tftp 下载文件
用以太网接口,在板子上配置好 tftp,即可用 tftp 下载编译好的可执行文件(tftp -g -r filename 192.168.19.19
),会下载到当然目录
用可视化 ui 界面可以根据显示屏的大小先调整好
在 Qt creator 编程时,在 ubuntu 上不能运行,只能编译出可执行文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。