QT5.12 移植

4 篇文章 0 订阅
2 篇文章 0 订阅

目录

版本

资源下载

QT编译

移植arm

运行测试程序

总结

版本

Ubuntu:ubuntu18.04

Qt版本:qt-everywhere-src-5.12.1.tar.xz

arm-linux-gcc 版本:arm-linux-gcc7.5

tslib版本:tslib-1.22

资源下载

QT源码:

https://download.csdn.net/download/ZYH10140/89622533?spm=1001.2014.3001.5503

tslib-1.22:

https://download.csdn.net/download/ZYH10140/89622596?spm=1001.2014.3001.5503

切换用户

由于后续需要使用超级权限进行处理,因此直接在此处切换为超级用户,避免后面的麻烦。

输入指令:sudo su

输入你的密码,然后呢回车,可以看到提示符的改变:

改为

QT编译

配置编译目标参数

修改后

1.设置目标平台

2.指定编译器绝对路径,当然也可以是相对路径;

完整如下:

#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib


#add_begin
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS +=-march=armv7-a -mtune=cortex-a7
QMAKE_CXXFLAGS +=-march=armv7-a -mtune=cortex-a7
#add_end


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

# modifications to g++.conf
#QMAKE_CC                = /home/ctools/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-gcc
#QMAKE_CXX               = /home/ctools/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-g++
#QMAKE_LINK              = /home/ctools/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-g++
#QMAKE_LINK_SHLIB        = /home/ctools/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-g++

# modifications to linux.conf
#QMAKE_AR                = /home/ctools/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-ar cqs
#QMAKE_OBJCOPY           = /home/ctools/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-objcopy
#QMAKE_NM                = /home/ctools/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-nm -P
#QMAKE_STRIP             = /home/ctools/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-strip


# 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)

配置qt编译选项

执行指令创建自动配置脚本 autoconfigure.sh :

指令:vi autoconfigure.sh

将以下文本复制粘贴到你的autoconfigure.sh中

./configure -prefix /home/qt-src-5.12.1/arm-qt \
-opensource \
-confirm-license \
-release \
-strip \
-shared \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-c++std c++14 \
--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/opt/tslib/include \
-L/opt/tslib/lib \
-recheck-all

注意如果使用更低版本或者高版本的编译器,需要修改c++版本 如11、14或者17,我的是7.5因此我设置的为14

注意安装目录需要更根据自己的修改

tslib连接路径需要更具自己的修改

tslib移植见上一篇tslib的一直。

修改脚本权限

指令: chmod +x autoconfigure.sh

配置

指令:./autoconfigure.sh

配置完成

上面提到的使用gmake编译,当然也可以使用make,

编译

指令:gmake -j32

注意:后面的-jxx根据自己电脑的新能调整,建议8-16

耐心等待,编译时间大概一小时

安装

指令:gmake install

查看编译结果

跳转到安装目录,我的是

指令:cd /home/qt-src-5.12.1/arm-qt

指令:ls 

至此QT编译完成

移植arm

将整个编译目录打包放置目标平台目录下

通过ftp或者其他手段,此处不在细说,我使用

进行解压

指令:tar -xf arm-qt-gcc7.5.tar.gz 

如果解压指令不支持则使用gunzip

指令:gunzip arm-qt-gcc7.5.tar.gz 

指令:tar -xf arm-qt-gcc7.5.tar

设置环境变量

export QT_ROOT=/usr/app_install/gui/qt
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts/
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins/
export QT_QPA_FB_TSLIB=1
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QT_ROOT/lib

其中触屏文件 event1的选择见tslib移植。

运行测试程序

我这边是配置到了自启动脚本中,自启动脚本完整如下:

#!/bin/sh

# ring beep
echo 60 > /sys/class/leds/beeper-pwm/brightness
usleep 200000
echo 0 > /sys/class/leds/beeper-pwm/brightness

# set ip
ifconfig eth0 192.168.1.136
ifconfig eth1 192.168.2.136

# disable rtc clk_out pins default
echo 0 > /sys/class/rtc/rtc0/device/clk_out_ctl

# if test function in sd card then exec
if [ -f "/media/mmcblk0p1/function/functiontest.sh" ]; then
	echo "Start functiontest.sh"
	cd /media/mmcblk0p1/function
	./functiontest.sh &
fi

# you can add your app start_command here
echo 7 4 1 7 > /proc/sys/kernel/printk


# tslib environment
export TSLIB_ROOT=/usr/app_install/gui/qt/tslib
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_FBDEVICE=/dev/fb0
export QWS_MOUSE_PROTO="tslib:/dev/input/event1 MouseMan:/dev/input/mouse1"
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$LD_LIBRARY_PATH

export QT_ROOT=/usr/app_install/gui/qt
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts/
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins/
export QT_QPA_FB_TSLIB=1
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QT_ROOT/lib

sleep(4)
cd /$QT_ROOT/bin
./zlgDemoGui -qws &

演示

总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值