当前位置:   article > 正文

交叉编译并移植qt_qmake.conf

qmake.conf


参考此链接


一、准备文件

1、交叉编译器:
下载链接https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabi/
我使用的是arm-linux-gnueabi
在这里插入图片描述
2、qt5.6 源码

下载链接:https://download.qt.io/new_archive/qt/5.6/5.6.0/single/
在这里插入图片描述

二、开始交叉编译

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文件为,
在这里插入图片描述
将每个路径设置为自己交叉编译链解压的路径,还有就是为防止一些不必要的错误,设置为绝对路径(PS:其实是可以不用更改的,将交叉编译器路径添加到环境中即可,但我一直报错,就直接采用修改文件这种方法了。还有就是我们用到是arm-linux-gnueabi,不是之前实验中用到的arm-linux-gnueabihf,一定要细心,我可是被坑了好久)

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 
  • 1
  • 2
  • 3
  • 4
  • 5

QT编译需要安装的编译链:

sudo apt-get install g++
  • 1

进入到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 \
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

-prefix 就是我们要安装到的目录

等待运行完成,
在这里插入图片描述
运行命令

make 
make install
  • 1
  • 2

等待编译完成,到/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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

拷贝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/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

接下来,开始配置环境
修改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/tty1
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

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/tty1
export QT_QPA_FB_TSLIB=1
export LD_PRELOAD=/lib/preloadable_libiconv.so
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3、创建/etc/rc.local

#!/bin/sh
. /etc/profile 
  • 1
  • 2

4、创建/etc/mdev.conf

sda[1-9]+ 0:0 777 * if [ $ACTION = "add" ]; then mount /dev/$MDEV /mnt; else umount /mnt; fi
  • 1

到此,qmake环境移植完毕,下面我们就可以编写简单的qt程序放到开发板上运行了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/292125
推荐阅读
相关标签
  

闽ICP备14008679号