2021SC@SDUSC
QT
qt是一个由Qt Company于1991年开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序(比如控制台工具和服务器)。
qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler,moc))以及一些宏。
Qt 支持的操作系统有很多,例如通用操作系统 Windows、Linux、Unix,智能手机系统 Android、iOS、WinPhone, 嵌入式系统 QNX、VxWorks 等等。
这里有关于QT的教程网址Qt是什么?Qt简介(非常全面)
那么开始干活吧。
一、准备文件
1
、交叉编译器:
下载链接
Linaro Releases
下载gcc-linaro-7.5.0-2019.12-x86_
arm-linux-gnueabi
2
、
qt5.6
源码

二、开始交叉编译
1.
将下载的文件解压到主目录(任意目录皆可)

( 我 们 要 用 到 的 交 叉 编 译 链 位 于 目 录
gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin)
2.
修改
.conf
文件
打开目录
/qt-everywhere-opensource-src-5.6.0/qtbase/mkspecs

可以看到很多目录,这些都是官方为不同平台所提供的预设,我们所要用到的是
linux-arm-gnueabi-g++
(即在图片中选定的目录),打开目录,看到
qmake.conf
文件,这就
是我们要修改的配置了。
修改
qmake.conf
文件为,

将每个路径设置为自己交叉编译链解压的路径,要设 置为绝对路径防止出错(其实是可以不用更改的,将交叉编译器路径添加到环境中即可)
3.
开始编译
qmake
首先,
64
位系统安装
32
位依赖库(
32
位系统跳过)
运行命令:
sudo apt-get install ia32-libs
sudo apt-get install lib32ncurses5
sudo apt-get install lib32z1
sudo apt-get install lib32bz2-1.0
sudo apt-get install lib32stdc++6
QT
编译需要安装的编译链
:
sudo apt-get install g++
进入到
qtbase
目录,在当前目录运行命令
./configure -prefix /usr/local/Qt5.6 \
-opensource \
-release \
-confirm-license \
-xplatform linux-arm-gnueabi-g++ \
-shared \
-qt-zlib \
-no-gif \
-qt-libjpeg \
-no-nis \
-no-opengl \
-no-cups \
-no-glib \
-no-dbus \
-no-rpath \
-no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 \
-no-avx \
-no-openssl \
-nomake tools \
-qreal float \
-qt-libpng \
-nomake examples \
其中,
-prefix
就是我们要安装到的目录
等待运行完成,运行命令
make
make install
等待编译完成,到
/usr/local/Qt5.6
,就可看到可以交叉编译程序的
qmake
了

三、移植 qmake
首先拷贝依赖库
lib
,按照之前的方法,先挂载,在直接整体拷贝过去,因为存在软链
接,如果单个文件复制会出问题
cd /home/raspi/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/arm-linux-gnueabi
mkdir rootfs
sudo mount /dev/sdb2 rootfs
sudo cp lib/* -r rootfs/lib/
sudo cp libc/lib/* -r rootfs/lib/
sudo umount rootfs
拷贝
qmake
(只需拷贝
Qt5.6
目录下的
lib
依赖库和
plugins
插件即可,下面是全部拷贝
过去了)
cd /usr/local/Qt5.6
mkdir rootfs
sudo mount /dev/sdb2 rootfs
cd rootfs/usr/local
sudo mkdir Qt5.6
cd /usr/local/Qt5.6
sudo cp * -r rootfs/usr/local/Qt5.6/
接下来,开始配置环境
修改
sd
卡的
/etc
中的文件
1
、
etc/init.d/rcS
#!/bin/sh
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
mount -a
export QTEDIR=/usr/local/Qt5.6
export LD_LIBRARY_PATH=/usr/local/Qt5.6/lib:$LD_LIBRARY_PATH
export QT_QPA_GENERIC_PLUGINS=tslib
export QT_QPA_FONTDIR=$QTEDIR/lib/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTEDIR/plugins
export
QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=480x272:mmSize=480x272:offset=0x0:tty=/dev/tt
y1
export QT_QPA_FB_TSLIB=1
export LD_PRELOAD=/lib/preloadable_libiconv.so
if [ -e /etc/pointercal ];then
echo "don't need ts_calibrate ...." > /dev/console
else
/usr/local/tslib/bin/ts_calibrate &
fi
/bin/stupid-ftpd.Linux6 -f /etc/stupid-ftpd.conf &
exec /etc/rc.local
2
、修改
/etc/profile
#!/bin/sh
export QTEDIR=/usr/local/Qt5.6
export LD_LIBRARY_PATH=/usr/local/Qt5.6/lib:$LD_LIBRARY_PATH
export QT_QPA_GENERIC_PLUGINS=tslib
export QT_QPA_FONTDIR=$QTEDIR/lib/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTEDIR/plugins
export
QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=480x272:mmSize=480x272:offset=0x0:tty=/dev/tt
y1
export QT_QPA_FB_TSLIB=1
export LD_PRELOAD=/lib/preloadable_libiconv.so
3
、创建
/etc/rc.local
#!/bin/sh
. /etc/profile
4
、创建
/etc/mdev.conf
sda[1-9]+ 0:0 777 * if [ $ACTION = "add" ]; then mount /dev/$MDEV /mnt; else umount
/mnt; fi
qmake
环境移植完成,qt可以运行了
如果还是不行可以看看这篇教程
移植QT5.6到嵌入式开发板(史上最详细的QT移植教程)_漫不经心-CSDN博客_qt移植