汇总(之二):交叉编译工具链arm-none-linux-gnueabi-, Qt交叉编译安装和移植,Qt桌面版编译安装,QTcreator安装和配置

1. 交叉编译工具链arm-none-linux-gnueabi-的安装

2. Qt4.8.1交叉编译安装和移植

3. Qt4.8.4桌面版编译安装

4. QTcreator2.5.2安装和配置


2. Qt4.8.1交叉编译安装和移植

这部分遇到很多问题,反复修改了很多配置,如下面列出的几篇。鉴于过程曲折,为避免以后再次陷入曲折过程,所以整理一下。


交叉编译qt4.8.4 for ARM   
[交叉编译qt4.8.4 for ARM]遇到到问题   
QT4.8.1移植到ARM目标板 


首先,我的基本环境是:

ubuntu12.04 LTS ,  要交叉编译的Qt版本是Qt4.8.1。

所需工具:

  交叉编译工具:前一篇已经介绍过,是zlg提供的交叉编译工具。

  qt4.8.4源码包:qt-everywhere-opensource-src-4.8.1.tar.gz

编译

1. 解压qt4.8.1源码包:

tar -zxvf qt-everywhere-opensource-src-4.8.1.tar.gz
2.   设置交叉编译工具链 修改文件/qt-everywhere-opensource-src-4.8.1/mkspecs/ qws/ linux-arm-gnueabi-g++ /qmake.conf,修改内容如下:

# modifications to g++.conf
QMAKE_CC = arm-none-linux-gnueabi-gcc
QMAKE_CXX = arm-none-linux-gnueabi-g++
QMAKE_LINK = arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-none-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-none-linux-gnueabi-objcopy
QMAKE_STRIP = arm-none-linux-gnueabi-strip


3. 生成Makefile

./configure -prefix /usr/local/qt-4.8.1-for-arm -embedded arm -host-little-endian -little-endian -no-cups -no-3dnow -nomake examples -nomake demos -nomake docs -xplatform /qws/linux-arm-gnueabi-g++


执行结果如下:

......

Qt  is now configured for building ,just run 'make'  
Once everything is built , you must run 'make  install'  
Qt will be installed into /usr/local/qt-4.8.1-for-arm
To  reconfigure ,run 'make confclean' and 'configure'


4. 编译

make  #此过程大概需要两个多小时
make install 

5. 修改环境变量

在~/.bashrc中添加以下语句

export ARMQTDIR=/usr/local/qt-4.8.1-for-arm
export PATH=$ARMQTDIR/bin:$PATH
export LD_LIBRARY_PATH=$ARMQTDIR/lib
export QMAKESPEC=/usr/local/qt-4.8.1-for-arm/mkspecs/qws/linux-arm-gnueabi-g++

   重新加载~/.bashrc:

source ~/.bashrc


6. 检查是否成功

qmake -v
QMake version 2.01a
Using Qt version 4.8.1 in /usr/local/qt-4.8.1-for-arm/lib

which qmake
/usr/local/qt-4.8.1-for-arm/bin/qmake


注:执行./configure 的参数标红部分的解释:

(1)如果没有 -little-endian, 执行上面的命令时,会得到提示:

The target system byte order could not be detected!
Turn on verbose messaging (-v) to see the final report.
You can use the -little-endian or -big-endian switch to
./configure to continue.

(2)如果是-xplatform /qws/linux-arm-g++,则在执行make时,会报错:

make[1]: arm-linux-g++:命令未找到

make[1]: *** [.obj/release-shared-emb-arm/qabstractanimation.o] 错误 127
make[1]:正在离开目录 `/home/tangys/qt-everywhere-opensource-src-4.8.1/src/corelib'
make: *** [sub-corelib-make_default-ordered] 错误 2

解决办法:-xplatform /qws/linux-arm-g++ 改为 -xplatform /qws/linux-arm-gnueabi-g++

然后: make confclean ,

再重新执行:

./configure -prefix /usr/local/qt-4.8.1-for-arm -embedded arm -host-little-endian-little-endian -no-cups -no-3dnow -nomake examples -nomake demos -nomake docs -xplatform /qws/linux-arm-gnueabi-g++


7. 移植到ARM目标板上

7.1 交叉编译完成之后,还要将交叉编译好的qt4.8.1-for-arm移植到目标板:
进入/usr/local/qt4.8.1-for-arm,对嵌入式qt进行打包,复制到目标板的相同目录下,可以通过minicom进行。

(参考:http://www.linuxidc.com/Linux/2013-04/82384p2.htm)


7.2 在主机上交叉编译一个最简单到hello目标程序,通过nfs方式,在目标板上执行,出现错误:

root@freescale /mnt/nfs/hellow$ ./hellow
QFontDatabase::loadFromCache: Font path doesn't match. Found /usr/lib/fonts in database, expected/usr/local/qt-4.8.1-for-arm/lib/fonts
Aborted

实际上这两个路径都存在,而且内容也一样。


解决办法:参考 http://blog.csdn.net/g457499940/article/details/11902045

目标板终端执行env或export查看环境配置,在/etc/profile中添加下面一行,将QT_QWS_FONTDIR环境变量export成前面一个路径,

export QT_QWS_FONTDIR=/usr/lib/fonts
保存之后,执行

source /etc/profile


问题解决。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值