摘要:本文主要介绍在PC机上搭建基于QT的嵌入式开发环境,其中很多源文件都是开发板自带,需要相应资料的可以评论留下邮箱地址。
版本:交叉编译工具链:GCC 4.7.3 【gcc-linaro-arm-linux-gnueabihf-4.7-2012.12-20121214_linux.tar.bz2】
Qt Creator:Qt Creator2.3.1【虚拟机上自己安装】
Qt/Embedded:qt 4.8.2 【qt-everywhere-opensource-src-4.8.2.tar.gz】
操作系统:Linux3.6.9
首先:确保虚拟机上已经安装好Qt Creator,并且有Qt X86版本(即可以在PC上编译调试qt程序,但是不能进行交叉编译不能在开发板上运行),下文的步骤是笔者自己编译成功的,可以照着搭建自己的平台环境。
步骤:
一:安装交叉编译工具链
每个开发板都有自己对应的交叉编译工具,所以一般都会在光盘给你。
$ tar -xjvfgcc-linaro-arm-linux-gnueabihf-4.7-2012.12-20121214_linux.tar.bz2
$vi ~/.bashrcexport PATH=opt/toolchain/4.4.3/arm-linux-gnueabihf-gcc/bin:$PATH
[opt/toolchain/4.4.3/arm-linux-gnueabihf-gcc
为我的目录,自己可以根据自己的情况修改]
保存,退出!
使新的环境变量生效$ source ~/.bashrc$arm-linux-gnueabihf-gcc
-v[打印出 GCC 版本为4.7.3 交叉编译工具链安装成功]
二:交叉编译QT库
根据目标板提供的交叉编译链工具对Qt4.8.2库文件进行配置,进入/usr/local/qt4.8.2_src/Qt_forArm/mkspecs/qws/linux-arm-g++目录
【/usr/local/qt4.8.2_src/Qt_forArm 此目录为你将 qt-everywhere-opensource-src-4.8.2.tar.gz解压后存放的目录】,
修改该目录下的qmake.conf文件并保存如图3-1所示,
标号①根据armv7-a的CPU以及cortex
A5的处理器打开了neon的优化运行指令,且使用这个编译选项生成的目标文件,允许在ARM和Thumb之间交叉调用;
标号②为编译g++的指定交叉编译工具路径;
标号③为编译Linux内核指定交叉编译工具路径。
$ cd qt-everywhere-opensource-src-4.8.3
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.7.1-arm -opensource -confirm-license-release -shared -embedded armv7
-xplatform qws/linux-arm-g++ -depths 16,18,24-fast -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng-qt-freetype -little-endian -host-little-endian -no-qt3support -no-libtiff-no-libmng -no-opengl -no-mmx -no-sse -no-sse2 -no-3dnow -no-openssl
-no-webkit-no-qvfb -no-nis -no-opengl -no-cups -no-glib -no-xcursor -no-xfixes-no-xrandr -no-xrender -no-separate-debug-info -nomake examples -nomake tools-nomake docs -lrt
$ gmake
$ gmake install
$ export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.7.1-arm/lib
其中./configure中相关关键配置参数说明如下:
-prefix/usr/local/Trolltech/QtEmbedded-4.7.1-arm----指定安装目录【版本其实是4.8.2,并不是4.7.1,大家可以根据自己的实际情况设置安装目录但是要保证前后一致】
-embeddedarm----嵌入式平台框架选择为armv7
-xplatformqws/linux-arm-g++----交叉编译时的目标平台选择
编译完成后,打开Qt Creator开发环境,工具---->选项--->Qt4进行设置,在Qt版本菜单下,手动设置选择qmake路径。
再到工具链菜单下,添加交叉编译工具链GCCE
如此,Qt Creator便有了两套Qt版本,通过在创建工程的时候选择不同的Qt版本,或对工程进行不同平台的构建便能够实现跨平台开发和调试。
三:移植到ARM
(1)需要将usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib移植到ARM板上相同的位置,将plugins里的.so也移入..../QtEmbedded-4.8.5-arm/lib
(2) 对(1)中的lib/下的.so做链接
ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so
ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so.4
ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so.4.8
ln -s libQtGui.so.4.8.5 libQtGui.so
ln -s libQtGui.so.4.8.5 libQtGui.so.4
ln -s libQtGui.so.4.8.5 libQtGui.so.4.8
......
注:(1)(2) 也可以用压缩打包整个lib,拷贝过去来实现
(3)开发板环境变量设置
vi ~/.bashrc 文件,加入
QTDIR=usr/local/Trolltech/QtEmbedded-4.7.1-arm
export QTDIR
PATH=$QTDIR/lib:$PATH
export PATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH