Arm-Linux嵌入式QT/E环境的建立

QT/E 3.x 系列比 QT/E 2.x 系列有非常大的改进,大大提高了开发进度,不再使用 tmake,安装也更
简单。但目前在网上关于 QT/E 3.x 系列的介绍还是比较少,所以本文介绍一下 QT/E 3.x 系列的安
装。
一、建立 arm 交叉编译工具链
在安装 QT/E 之前,应确保 arm-linux 交叉编译工具链已经建立,如果还没有可以参考以下步骤建
立。
1、下载交叉编译工具 cross-2.95.3.tar.bz2(或其他版本如:cross-3.4.4.tar.bz2),这是已经制作好的
arm 交叉编译工具链,只需解压及建交环境变量即可使用。
2、把文件 cross-2.95.3.tar.bz2 拷贝到一个文件夹,www.linuxidc.com 这里我用:/usr/local/arm 这
个目录。 注意后面建立环境变量时要与之对应。
3、解压 tar -xjvf cross-2.95.3.tar.bz2
4、建立环境变量 export PATH=/usr/local/arm/2.95.3/bin:$PATH
或者也可以写进文件 ~/.bashrc 中,这样就不用每次开机都 export 啦。
vi ~/.bashrc
在后面加上 export PATH=/usr/local/arm/2.95.3/bin:$PATH
到此 arm-linux 交叉编译工具链就已经建好了。
二、编译 QT
1、QT/E 自由版可到官网 ftp 下载。网址是:ftp://ftp.trolltech.com/qt/source/ 。 可自己选择一个版
本下载,个人认为 QT/E 3.x 系列比较好用,不过 QT/E 2.x 系列在网上的资料比较多。但建议不用
qt/e 3.3.x 的版本,因为在本人开发的过程当中试用过 qt/e 3.3.4 和 qt/e3.3.8,发现它们在 ARM 开
发板上占 CPU 的资源特高,一直占 cpu 98%左右,现在我还没找到原因,不知道有没有哪位朋友
也遇到这个问题。推荐用 qt/e 3.1.0 版本,我正在用,没遇到什么问题。
(注:问题已经得到解决,原来是键盘接口没做好,等有空与大家分享一下移植键盘接口的过程)
2、在这里,本人假设用的是 qt-embedded-free-3.1.0.tar.bz2
3、把文件 qt-embedded-free-3.1.0.tar.bz2 拷贝到一个文件夹,这里我用:/usr/local/arm 这个目录。
注意后面建立环境变量时要与之对应。
4、解压 tar -xjvf qt-embedded-free-3.1.0.tar.bz2
把解压后的文件夹 qt-embedded-free-3.1.0 改为 qte。(可以不改,这里是为了方便,注意后面建
立环境变量时要与之对应)
mv qt-embedded-free-3.1.0 qte
5、建立环境变量
vi ~/.bashrc
在后面加上
export QTDIR=/usr/local/arm/qte
export QTEDIR=$QTDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
(请重新登陆,以使得环境变量生效)
6、配置 QT
进入 QT/E 目录: cd $QTDIR
输入: ./configure -embedded arm -thread -no-cups -qvfb -depths 4,8,16,32
上述选项: -embedded arm 指目标平台为 arm; -thread 表示支持 qt 线程,本人开发当中用到; -qvfb
表示支持虚拟缓冲帧工具 qvfb;-depths 4,8,16,32 表示支持 4,8,16,32 位的显示颜色深度。还有很
多选项就不一一列举,请查看 ./configure -help。
此外还有一个选项我没用的是 -qconfig local,你可以把一些开关变量写到一个文件 qconfig-local.h 中,
并把它放到$QTDIR/src/tools 下。可参考这个目录下的 qconfig-small.h、qconfig-medium.h 、qconfiglarge.h
等文件,直接使用它们也行,如: -qconfig small 。通过这些开关变量,可以把一些开发当中用
不着的构件去掉,减少 qt 库的大小。这里要对 QT 比较熟练,初学者可先不理。
(本人在家里编译到这里曾出现编译 $QTDIR/include/qvaluestack.h 这个文件的时候出错,后来把
qt3.3.8 对应的文件拷贝过来覆盖便通过了,估计是与 gcc 的版本不兼容的问题,我在公司里没出现过这
种问题)
7、编译
make sub-src // 指定按精简方式编译开发包,也就是说有些 Qt 类未被编
译。
8、测试
至此编译工作完成,最后测试一下是否能正常使用。我们可以用 QT 自带的例子来测试,如:
cd $QTDIR/examples/aclock //或你自己新建一个 QT 工程也行
make clean //把原来的清掉
rm *.pro Makefile //删掉,重新建立工程文件
qmake -project
qmake -spec $QTDIR/mkspecs/qws/linux-arm-g++ -o Makefile
-spec 指定目标板的配置文件,这里我做的是 linux arm 平台,注意在这里,$QTDIR/mkspecs/qws/linuxarm-g++
它不是编译器,是一个配置文件,而编译时用的编译器是我们 在第一步建立的 arm 交叉编译工
具链里面的编译器。
make
如果没出错就表示你的 QT/E 环境已经成功建立。如果提示说 cannot find -lqte, 那么你试一下修改
Makefile 文件,找到-lqte ,把它改为-lqte-mt 再 make 一次一般就行了。这是因为如果用到 QT 线程或其它
一些原因,它生成的库不再是 libqte.so.3.1.0,而是 libqte-mt.so.3.1.0,所以它便找不到了。
三、移植到开发板(以下都是在目标机环境下)
1、新建一个目录,如:/qt/lib。进入此目录 cd /qt/lib
2、通过 ftp 把上面生成的 qt 库文件 libqte-mt.so.3.1.0 下载到开发板/qt/lib/目录下。(注意:不要用 wget
下载,会破坏库文件,从而出现 ld.so: dynamic-link.h: 62: elf_get_dynamic_info: Assertion `! "bad
dynamic tag"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' failed!.这种错误)
3、创建 qt 库连接:
Object 2
ln -s libqte-mt.so.3.1.0 libqte-mt.so
ln -s libqte-mt.so.3.1.0 libqte-mt.so.3
ln -s libqte-mt.so.3.1.0 libqte-mt.so.3.1
4、建立环境变量
vi ~/.bashrc
在后面加上
export QTDIR=/qt
export QTEDIR=$QTDIR
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
4、到此目标板的环境已经建好。现在可以把上面的例子 aclock 下载到目标板上试一下能不能跑起来!
在开发板控制台下输入: ./aclock -qws
如果能跑起来但是键盘用不了,那是正常的情况,因为键盘、鼠标等设备的接口还没加进 QT/E 的原因,
而这个不是一两句话能说清的,所以留到以后再另外补充!
补充一点:如果有类似这样的提示: "./aclock: error while loading shared libraries: libstdc++.so.6: cannot
load shared object file: No such file or directory." 你可以从我们第一步建立的 arm 交叉编译工具链里
的/usr/local/arm/2.95.3/arm-linux/lib/目录下找到相应的库文件下 载到开发板的 /lib 目录下即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vqt5_qt6

你的鼓励是我们创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值