免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1556 | 回复: 0
打印 上一主题 下一主题

交叉编译qt -4.4.3 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-18 15:40 |只看该作者 |倒序浏览

交叉编译qt-4.4.3

前段时间进行交叉编译了qtopia-free-2.2.0,虽然费了很多周折,最终还是编译成功了,但发现qt2的版本有些旧了,没有qt4的功能强大,就有找些新版本尝试的冲动,新版本总是要比旧版本好用吧。于是,上网查资料,后来比较顺利的把qt-4.4.3的版本的编译安装好了,留下此文档,已备忘,也给准备做这些事情的朋友提供一个思路。安装时主要参考了bycore这位朋友的文章(
http://blog.chinaunix.net/u1/49924/showart_667900.html
),他也给了我很多有益的帮助,在此对他表示感谢。
先看看Qt的各个版本简介:
1.什么是QT
Qt是一个完整的C++应用程序开发框架。它包含一个类库,和用于跨平台开发及国际化的工具。Qt API在所有支持的平台上都是相同的,Qt工具在这些平台上的使用方式也一致, 因而Qt应用的开发和部署与平台无关。
2.什么是Qtopia
Qtopia是一个面向嵌入式Linux的全方位应用程序开发平台,同时也是用于基于Linux的PDA(个人数字助理),智能电话(Smartphone)以及其他移动设备的用户界面。简单地说,Qtopia实质上是一组关于PDA和智能电话的应用程序结合,如果需要开发这类产品可以在这组程序的基础上迅速构建出PDA或者智能电话。Qtopia实质上依赖Qt/Embedded。
3.什么是Qt/Embedded
Qt/Embedded是一个完整的自包含GUI和基于Linux的嵌入式平台开发工具。这个开发工具的名字好像最容易混淆,当然Qt/Embedded是最熟悉的名字,好像Qtopia Core说的也是它。最近,奇趣公司又该名字了,它的新名字叫做qt-embedded-linux-xxxx,看来这个Qt/Embedded的马甲还很多哈。

我的开发环境:
   【硬件】: CPU:P4 2.8 内存:1G 硬盘:160G。
   【操作系统】:Fedora 9 全部安装。
   【交叉编译器】:cross-3.4.1
   【用户】:root
    1.编译前的一些准备工作:
    1.1 建立目录
/usr/local/qt  (源码包存放的目录)
/usr/local/arm  (交叉编译器cross-3.4.1所在目录,若已安装,此处跳过。)
在终端中执行:
#mkdir /usr/local/qt
#mkdir /usr/local/arm  
1.2 下载源码包
qt-x11-opensource-src-4.4.3.tar.gz
qt-embedded-linux-opensource-src-4.4.3.tar.gz
我编译安装的是qt-x11-opensource-src-4.4.3和qt-embedded-linux-opensource-src-4.4.3,源码包的下载地址是:
http://www.qtopia.org.cn/ftp/mirror/ftp.trolltech.com/qt/source/
1.3 安装交叉编译器(已安装cross-3.4.1的这一步骤省略!跳至1.4)
1.解压cross-3.4.1.tar.bz2
把cross-3.4.1.tar.bz2复制到在1.1中建立的目录/usr/local/arm下,在终端中进行如下操作:
#cd /usr/local/arm
#tar jxvf cross-3.4.1.tar.bz2
等待解压完成。
2.设置路径变量
由于刚才是在/usr/local/arm的目录下安装的cross-3.4.1,所以设置路径为:PATH=/usr/local/arm/3.4.1/bin:$PATH,然后可以查看arm-linux-gcc的版本情况,在终端中进行以下操作:
#export PATH=/usr/local/arm/3.4.1/bin:$PATH
#arm-linux-gcc -v
这样就把交叉编译器的地址变量设置好了,但这样设置路径变量的方法只在此终端中生效,对其他的终端无效,若要设置对所有用户所有终端都有效的路径变量,在/etc/profile 中最后一行添加“export PATH=/usr/local/arm/3.4.1/bin:$PATH”,详见我的“
Linux里设置环境变量的方法(export PATH
”的文章(
http://blog.chinaunix.net/u2/86665/showart_1669729.html
)。
1.4 编译安装qt-x11-opensource-src-4.4.3
qt-x11版本可以产生Qt开发工具,如designer等等,最重要的是可以得到qvfb,嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。qt-embedded版本就是专门用于嵌入式方面的版本。
1.解压文件
将qt-x11-opensource-src-4.4.3.tar.gz复制到/root/local/qt目录下,进行解压,在终端中进行如下操作:
#cd /root/local/qt
#tar zxvf qt-x11-opensource-src.tar.gz
解压完成后,得到/usr/local/qt/qt-x11-opensource-src-4.4.3目录。下面就开始进行编译了。
2.编译及安装qt-x11-opensource-src-4.4.3
进入/usr/local/qt/qt-x11-opensource-src-4.4.3目录,进行编译安装。在终端中进行如下操作:
#./configure –qvfb
#make
#cd tools/qvfb
#make
#cd ../..
#make install
3.复制文件
make install完成后,会在/usr/local目录下生成一个Trolltech目录,形成/usr/local/Trolltech目录,这是qt-x11-opensource-src-4.4.3安装后所在的目录,进入/usr/local/Trolltech会看到一个Qt-4.4.3的目录,将/usr/local/qt/qt-x11-opensource-src-4.4.3/tools/qvfb目录下的qvfb相关文件拷贝到/usr/local/Trolltech/Qt-4.4.3/bin目录下,在终端中操作(确定当前目录是/usr/local/qt/qt-x11-opensource-src-4.4.3):
#cp tools/qvfb/qvfb* /usr/local/Trolltech/Qt-4.4.3/bin
OK,qt-x11-opensource-src-4.4.3就编译安装成功了,你就可以使用/usr/local/Trolltech/Qt-4.4.3下的Qt进行编程开发了。
1.5 编译及安装qt-embedded-linux-opensource-src-4.4.3
1.解压文件
将qt-embedded-linux-opensource-src-4.4.3.tar.gz复制到/root/local/qt目录下进行解压,解压完成后,得到/usr/local/qt/qt-embedded-linux-opensource-src-4.4.3目录。将qt-embedded-linux-opensource-src-4.4.3重命名为qt-embedded-linux-opensource-src-4.4.3-x86。再解压一下qt-embedded-linux-opensource-src-4.4.3.tar.gz,并重命名为qt-embedded-linux-opensource-src-4.4.3-arm,在终端中进行操作:
#cd /root/local/qt
#tar zxvf qt-embedded-linux-opensource-src.tar.gz
#mv qt-embedded-linux-opensource-src-4.4.3 qt-embedded-linux-opensource-src-4.4.3-x86
#tar zxvf qt-embedded-linux-opensource-src.tar.gz
#mv qt-embedded-linux-opensource-src-4.4.3 qt-embedded-linux-opensource-src-4.4.3-arm
这里,qt-embedded有两个复制:qt-embedded-linux-opensource-src-4.4.3-x86和qt-embedded-linux-opensource-src-4.4.3-arm,根据他们的名字可以知道前者是适合x架构的,后者适合arm架构为什么需要两个呢?如果有开发板的话,可以只编译qt-embedded版本成arm架构的就可以了,但是很多时候用qvfb的话,开发会方便很多,所以多编译一个x86架构的也不错。这里是否有些疑问,qt-x11也是适合x86结构的,这不是和qt-embedded重复了吗?答案是这样的,qt-embedded版本只能在嵌入式板子上面运行,编译成x86架构的程序也只能在x86的嵌入式板子上跑。前面说过,我们需要qvfb来开发,但是qvfb只能执行x86架构的应用程序,所以需要让qt-embedded生成关于x86的库和其他文件。而将qt-embedded编译成arm,又是为什么呢?道理很简单,我最终的qt应用程序需要在arm架构上面运行,当然需要这方面的库,所以编译成arm也就顺理成章了。好了,现在简单的总结一下,首先,使用qt-x11提供的库和开发工具开发出qt应用程序,然后使用qt-embedded关于x86库和工具再次编译我们开发qt应用程序,这是所得到的可执行文件就可以在qvfb上运行了,最后,使用qt-embeddedd的arm库再次编译就可以得到在arm上能运行的可执行程序。很明显,如果有开发板,第二步是可要可不要的(最好是要),如果没有开发板的话,第三步也就没必要了,这样就不需要将qt-embedded编译成适合arm架构的。
2.编译及安装qt-x11-opensource-src-4.4.3-x86
进入/usr/local/qt/qt-x11-opensource-src-4.4.3-x86目录,进行编译安装。在终端中进行如下操作:
#cd /usr/local/qt/qt-x11-opensource-src-4.4.3-x86
#./configure
#make(或gmake)
#make install(或gmake install)
OK,qt-x11-opensource-src-4.4.3-x86就编译好了。
3.编译及安装qt-x11-opensource-src-4.4.3-arm
进入/usr/local/qt/qt-x11-opensource-src-4.4.3-arm目录,进行编译安装。在终端中进行如下操作:
#cd /usr/local/qt/qt-x11-opensource-src-4.4.3-arm
#./configure –arch arm
#make(或gmake)
#make install(或gmake install)
OK,qt-x11-opensource-src-4.4.3-arm也编译好了。
注意:如果在编译的过程中出错,在重新make前需要先执行make clean,然后再./configure,再执行make的操作。



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/86665/showart_1727950.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP