好吧,吐血搞了三天,终于把这个问题解决了,菜鸟上不起呀!
问题:当QT Creator安装好后,它的qmake只能生产在X86下的Makefile,这方便我们在电脑上调试,看效果。但当我们需要将编译好的QT程序下载到开发板上运行时,这个生成的目标文件是无法在板子上执行的,因此我们需要添加arm版本的qmake,但当我用FriendlyARM提供的 target-qte-4.8.5-to-hostpc.tgz 解压到根目录下时,得到的qmake居然不是X86下可执行的程序(这应该是arm架构上的可执行程序),因此就只好自己吐血来编译制作target-qte-4.8.5-to-devboard.tgz 和 target-qte-4.8.5-to-hostpc.tgz 这两个包了!
第一步:将arm-qte-4.8.5-20131207.tar.gz解压到某目录下(我的是/opt/mini2440/arm-qte-4.8.5),得到如下几个文件:
qt-everywhere-opensource-src-4.8.5 .tgz build.sh fond mktarget
第二步:执行脚本程序build.sh
首先我们可以先执行vi build.sh,打开这个安装脚本看一下里面的内容,如下:
可以看出,这个脚本的任务可分为清缓存、解压安装包、配置、编译、安装等几个阶段!
#sh build.sh
不幸的是,却出现了以下问题:execvp:arm-linux-gcc:Too many levels of symbolic links
好吧,从这个报错上可以看出,出错是在make编译阶段,而从
execvp:arm-linux-gcc:Too many levels of symbolic links
可以看出,出错的原因是在make时无法定位编译器,这一点是从某外国网友的回答中得到的启发:
http://stackoverflow.com/questions/7027740/makefile-and-symbolic-links/
因此,系统找不到我的编译器目录,那我们就可以在相应的配置文件里面添加详细的编译器目录不久OK?
好吧,那在哪儿添加呢?我们知道,make时所依赖的文件是Makefile,因此,进入源码文件夹,执行#vi Makefile 打开Makefile文件,在里面随处可见这样的编译器定位语句(当然这个表述可能有问题):
OK,那么我们就找到相应的文件夹:
#cd mkspecs/qws/linux-arm-g++
里面有两个文件:
qmake.conf qplatformdefs.h
很显然,前一个便是qmake的编译文件,用vi qmake.conf 打开它,可以看到如下的编译器配置命令:
好吧,我们可以把上述换成自己所安装的交叉编译器的详细路径,如下:
这样,咱们在编译时就能够找到编译器的地址了,然后再会到安装目录重新执行
#sh build.sh
OK,现在可以成功编译安装了,但是,这个时间不是一般的长呀,我I5的处理器,从晚上的11点一直编译到凌晨1点半,结果电脑没电了,然后第二天早上系统自动恢复数据后继续编译了一个小时,额,我也是醉了!
好吧,现在可以执行mktarget命令制作目标板一起PC机上的安装包了!
#./mktarget
得到两个安装包,target-qte-4.8.5-to-hostpc.tgz 和 target-qte-4.8.5-to-devboard.tgz
将target-qte-4.8.5-to-hostpc.tgz解压到根目录,便可以在相应的目录下找到相应的qmake可执行程序并添加到Qt Creator当中了!
#cd /usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin
为了和QT自带的qmake区别,可以将qmake更名为qmake-arm并链接到 /usr/bin中
#mv qmake qmake-arm
#ln –s /usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin/qmake-arm /usr/bin/qmake-arm
这样在任何地方,执行qmake-arm都可以进行编译了!