LINUX环境下QT5.6.0移植到开发板f1c100详细过程以及过程中遇到的问题详解

QT5.6.0移植到开发板f1c100详细过程以及过程中遇到的问题详解!!!!!!

一,安装交叉编译工具
安装交叉编译工具我就不多说了,网上这个方面的知识数不胜数,我在这里提供一个交叉编译工具。我用的是4.9版本的。
链接:https://pan.baidu.com/s/1jOpLPW5mOya0sKcFVrmn-Q
提取码:dug8

二、交叉编译QT5.6.0。(由于全志的f1c100不支持触摸屏,我这里就没有交叉编译tslib,这里提供一个链接,需要的可以进去看看[http://zero.lichee.pro/%E5%BA%94%E7%94%A8/QT_doc1.html])

1,下载QT源码

在这里插入图片描述
我下载的是5.6.0版本的qt源码包
2,配置
2.1,配置qmake.conf文件
首先需要安装
sudo apt-get install libtool automake autogen autoconf libsysfs-dev
后面qmake.conf 配置需要用到的sqlite的lib
切换到 cd qt-everywhere-opensource-src-5.6.0/qtbase/mkspecs/linux-arm-gnueabi-g++目录下,
编辑 vim qmake.conf

在这里插入图片描述
修改配置文件如下,主要修改了以下几个方面:
取消软浮点(f1c100不支持软浮点),指定开发板架构,指定编译器(编译器路径必须是绝对路径,否则会报错,所找不到编译器,千万注意!!!!)
2.2,配置qt(这是最重要的一步)
./configure -verbose
-prefix /opt/qt5.9.1-arm
-confirm-license
-opensource
-release
-make libs
-xplatform linux-arm-gnueabi-g++
-optimized-qmake
-pch
-sql-sqlite -sqlite
-qt-libjpeg
-qt-libpng
-qt-zlib
//-no-alsa -no-qt-pcre -no-eglfs -no-freetype
-tslib
-no-opengl
-no-sse2
-no-openssl
-no-cups
-no-glib
-no-dbus
-no-xcb
-no-separate-debug-info
-I/opt/tslib/include -L/opt/tslib/lib
-make examples -make tools -nomake tests -no-iconv

为了方便,大家可以写成一个脚本文件,我这里写成了cfg_arm.sh,主要需要给它加上执行权限(chmod +x cfg_arm.sh),这些配置项的作用,想要了解的可以通过指令./configure -help,
在这里插入图片描述
写好脚本后,./cfg_arm.sh,
配置好后会出现这个界面:
在这里插入图片描述
2.3,编译make(这个步骤花费的时间比较长,一个线程需要2~3个小时,由于我的电脑能够20个线程,所以只花了30分钟)
make -j20
2.4,make install(安装)
安装完成后,进入指定安装路径下的执行如下指令能出现如下信息,表明安装完成。

在这里插入图片描述
我的安装路径是/opt/QtEmbeddeb-5.6.0-arm。

三,移植QT
交叉编译arm版本的QT库后,就是移植到开发板了,
有三种方法:
1.将需要的库直接复制到开发板上对应的路径下,如:将库文件复制到开发板的/lib,/usr/lib中。(前提是开发板中空间足够大)
2.通过SD卡挂载,具体挂载每个开发板都有区别,我的是全志的f1c100,我是用的便是SD挂载。
方法:通过在ubuntu下的fdisk命令对SD卡进行分区。
例如:
2.1 fdisk /dev/sdb
n 1 默认 +32M
n 2 默认 默认
完成两个分区。
w 退出分区操作
2.2 mkfs.vfat /dev/sdb1 //格式化第一个分区为fat16格式
mkfs.ext4 /dev/sdb2 //格式化第一个分区为ext4格式
注意:在进行分区和格式化操作的时候,不要挂载分区,如果分区自动挂载了,手动卸载,例如:umount /dev/sdb1,否则会出错。
2.3 存入数据
mount /dev/sdb1 /media/usb0 //挂载分区1
mount /dev/sdb12 /media/usb1 //挂载分区2
然后将设备树文件和内核镜像文件复制到第一个分区。
将 文件系统的压缩包解压到第二个分区。
2.4,进入开发,通过mount指令对编译好的QT库进行挂载
例如:
mount /media/mmcblkop1 /opt //建议挂载的路径跟自身在ubuntu下的安装路径一致。
四,设置环境变量
export QT_ROOT=/opt/QtEmbedded-5.6.0-arm
export TSLIB_ROOT=/opt/tslib/
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE= T S L I B R O O T / e t c / t s . c o n f e x p o r t T S L I B P L U G I N D I R = TSLIB_ROOT/etc/ts.conf export TSLIB_PLUGINDIR= TSLIBROOT/etc/ts.confexportTSLIBPLUGINDIR=TSLIB_ROOT/lib/ts
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event0
export QT_QPA_FONTDIR= Q T R O O T / l i b / f o n t s ( 此 处 是 指 定 中 文 字 库 目 录 ) e x p o r t Q T Q P A P L A T F O R M P L U G I N P A T H = QT_ROOT/lib/fonts (此处是指定中文字库目录) export QT_QPA_PLATFORM_PLUGIN_PATH= QTROOT/lib/fontsexportQTQPAPLATFORMPLUGINPATH=QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export TSLIB_CALIBFILE=/etc/pointercal
export QT_PLUGIN_PATH= Q T R O O T / p l u g i n s / e x p o r t L D L I B R A R Y P A T H = QT_ROOT/plugins/ export LD_LIBRARY_PATH= QTROOT/plugins/exportLDLIBRARYPATH=QT_ROOT/lib:$TSLIB_ROOT/lib

注意:这篇文章的内容是我走过的,但是每个人对应的环境可能不同,或许会存在或多或少的问题,仅供参考。对于QT及其其他应用库的移植,我发现这种方法的移植很容易出现问题,所以我查阅资料,还有第二种相对方便的方法,那就是通过buildroot生成带相应库文件的文件系统。具体请看我第二篇文章。 有问题欢迎留言,知无不言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值