转载地址:http://blog.csdn.net/lizuobin2/article/details/52673494
目前网上的大多数 QT 移植教程还都停留在 qt4.8 版本,或者还有更老的 Qtopia ,但是目前 Qt 已经发展到最新的 5.7 版本了,我个人也已经使用了很长一段时间的 qt5.6 for windows ,本文就来介绍一下QT在嵌入式环境的搭建。
移植以到 JZ2440 为例,使用韦老大提供的 ubuntu9.10 虚拟机作为移植环境。当然,其它虚拟机也是可以的,我同样在 ubuntu14.04 移植成功,只不过需要额外装一些库,后面我会简单提及。
此外,我尝试使用 4.3.2 版本的交叉编译工具编译 Qt5.6 ,编译过成功很多错误,编译成功之后使用 qt 编译应用程序时也存在问题,因此我是用的是友善提供的 4.4.3 版本的交叉编译工具。建议新手使用与我相同的编译环境。
因为我们更换了编译工具,因此,我们有接下来的4个工作。
1、重新编译内核
2、制作文件系统
3、移植tslib
4、移植qt
教程涉及的资料:
1、交叉编译器
arm-linux-gcc-4.4.3.tar.gz .链接:http://pan.baidu.com/s/1nvJF8ud 密码:oi57
2、针对于 JZ2440 的内核补丁以及源码
linux-2.6.22.6.tar.bz2 .链接:http://pan.baidu.com/s/1gf0oZn1 密码:jrp6
linux-2.6.22.6_jz2440.patch 链接:http://pan.baidu.com/s/1c1CWgTE 密码:uwuu
4.3寸LCD_mach-smdk2440.c 链接:http://pan.baidu.com/s/1boZsKwf 密码:1xml
3、busybox
busybox-1.22.1.tar.bz2 .链接:http://pan.baidu.com/s/1cee6CI .密码:lv81
4、tslib .
tslib-1.4.tar.gz
5、qt5.6 源码 链接:http://pan.baidu.com/s/1jINj3IQ 密码:6kkc
qt-everywhere-opensource-src-5.6.0.tar.gz 链接:http://pan.baidu.com/s/1kVnV9oN 密码:r7cm
一、更换交叉编译器
首先,将下载好的文件全部放在 /work 目录下
1、解压交叉编译器
sudo tar zxvf arm-linux-gcc-4.4.3.tar.gz -C / #展开在根目录
ls /opt/FriendlyARM/toolschain/4.4.3/bin #检查是否生成了编译目录
2、设置环境变量
sudo vi /etc/environment
将现在原有的交叉编译器路径替换为我们新解压的交叉编译器,举例:
[cpp] view plain
#PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/work/tools/gcc-3.4.5-glibc-2.3.6/bin"//注释
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/FriendlyARM/toolschain/4.4.3/bin"//增加
后期测试时我发现这里是有问题的,由于我的安装目录都指定的是 usr 目录,需要 root 权限,然而在 environment 中设置的环境变量导致使用 root 权限 make install 过程中出现了个别的 command not found ,于是我将环境变量放到了 /etc/profile 中,这个文件是对所有用户生效的。至于environment
百度了一下是系统环境变量按说应该没问题,但是的确出现了问题。索性还是大家还是直接搞到 profile 中吧。
3、重启虚拟机
4、检查是否更换成功
arm-linux-gcc -v
如图,更换完毕,我们的编译器就变为 4.4.3 版本了。
二、重新编译内核
如果你不是jz2440也没关系,使用你曾经移植好的内核,重新编译即可,注意内核需要开启EABI的支持,如果你是jz2440,按照下面的步骤操作即可。
1、解压
tar jxvf linux-2.6.22.6.tar.bz2
2、打补丁
cd linux-2.6.22.6
patch -p1 < ../linux-2.6.22.6_jz2440.patch
如果你是 4.3 寸的 JZ2440 ,替换 LCD 驱动,3.5寸跳过此步
mv ../4.3寸LCD_mach-smdk2440.c arch/arm/mach-s3c2440/mach-smdk2440.c
3、配置内核支持 EABI
make menuconfig
kernel features->
use the arm eabi to .... //选中这一项
4、修改 makefile ,不改的话 4.4.3 编译器编译时会报错