当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]QT/E和Qtopia的编译详解

(一)编译PC上的qpe

     今天我给大家分享一下我自己从编译PC上的QT到编译ARM上的QT(交叉编译QPE)的过程,首先说说编译PC上的QT/E,我起初的时候不知道编译PC上的QT/E编译qpe和交叉编译后的qpe有什么不同,后来才发现的确有不同点:PC上的QT/E的qpe环境编译成功以后输入:
#qvfb 弹出了虚拟帧缓冲器,然后我们再打开一个终端,输入:
#qpe 在返回上一个终端,发现qpe的图形界面在虚拟帧缓冲的那个黑色框架中显示出来
    而交叉编译qpe以后,输入
#qvfb 弹出虚拟帧缓冲器以后,然后再打开一个终端,输入:
#qpe 系统出现错误:cannot execute binary file 说明不支持这样的二进制文件格式
    总结得出pc编译QT/E以后qpe 是i386 的,可以直接在PC机器上运行,交叉编译后的qpe是ARM的,只有挂接了板子后才可以运行(大家可以找到qpe,然后用file命令检测),具体操作如下:
#locate qpe | more  找到qpe位置,找到后转到它所在的目录,然后
#file qpe  这样就可以看它(qpe)所支持的处理器格式了.

    下面我们来一步步分析我的编译过程,
    硬件就不用说了:内存256MB,主频1.6GHZ,因为我是学写驱动的所以裸装RedHat9.0(2.4.20-8)
    交叉编译工具是2.95.3的,我把它放到了/usr/local/arm/目录中,然后在/etc/profile中配置了它的路径
    注意:大多数厂家都提供了编译QT/E和Qtopia的脚本,我建议自己跟着他们提供的脚本一步一步的做,这样以来错了也知道是在哪一步出问题。
    首先在创建目录/yehuo2410/qt_x86用于编译QT/E
    商家提供以下编译资料:
tmake-1.11.tar.gz  ,qt-embede-2.3.7.tar.gz , qt-x11-2.3.2.tar.gz,qt-free-1.7.tar.gz,这些对编译PC上的QT/E的qpe足够了,不过在交叉编译qpe的时候,还差两份资料:e2fsprogs.1.35.tar.gz,jpegsrc.v6b.tar.gz(必须要)
    现在开始脚本分析了:
#cd /yehuo2410 (野火2410是我自己取的,不局限于任何厂家ARM开发板)
#tar xzvf  +各个压缩包,解压到/yehuo2410
    以下建立通用的目录
#mv tmake-11 tmake
#mv qt-2.3.7.tar.gz qt
#mv qt-2.3.2.tar.gz  qt-x11
#mv qt-free-1.7.tar.gz qtopia

#cd qt-x11  转到这个目录开始编译相应的工具
#export QTDIR=$PWD  配置当前QTDIR
#echo yes | ./configure -static -ro-xft -no-opengl -no-sm  形成Makefile文件
#make -C src/moc 编译形成moc(元对象编译器)工具
#cp src/moc/moc bin  拷贝上一步生成的moc到当前目录的bin
#make -C src  这一步是必须的
    以下两步形成设计器designer和虚拟帧缓冲器qvfb
#make -C tools/designer
    这时候designer工具不会在tools/designer下形成,而是在当前目录(qt-x11的bin目录)下形成,故不用拷贝,你会发现qt-x11/bin下多了uic,和designer工具,uic首先形成,因为designer在编译是要用到uic工具,uic工具是qt中用来处理.ui文件的工具。
#make -C tools/qvfb
#cp tools/qvfb bin 

#strip bin/uic bin/moc bin/designer bin/qvfb 是对各个工具可执行文件进行节优化
#cp /bin/* ../qt/bin  拷贝这些工具到 qt-x11的兄弟目录qt中的bin目录中,qt/bin中有三个文件:findtr,
qt20fix,qtrename140,而qt-x11/bin中也有,拷贝的时候系统问题是否覆盖(qt-x11/bin里的这三个文件是否覆盖qt/bin里的这三个文件?),我选择是。
# cd ..
    下面开始配置环境变量,很多脚本都这样写
#export QTDIR=$PWD/qt
#export QTEDIR=$QTDIR
#export QPEDIR=$PWD/qtopia
#export TMAKEDIR=$PWD/tmake
#export TMAKEPATH=$TMAKEDIR/llib/qws/linux-generic-g++(常规g++编译器)这是和交叉编译qpe 的一处不同,qws目录中有很多包括手机,PDA和ARM之类的g++编译器。
#export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH
#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH 配置了这里就不用配置/etc./ld.so.conf文件了。
    上述配置固然好,不过这样只是针对当前终端有效,如果再打开一个新终端,那么这些变量在新终端中不会生效,保险的方法是:在/etc/profile目录里把这些配置信息输入到profile的末尾,不过不能用$PWD了 要把所有$PWD字样改成/yehuo2410/qt_x86,注销系统,重新登陆后,环境变量生效(有个立即生效的方法我忘记了)。
    如果这里没有配置好,那么在编译的时候可能出现tmake版本过低,然后系统要求起码要1.11版本的
tmake,这是因为我们选择了全部安装Linux操作系统,系统本来有个1.7版本的tmake,在没有配置TMAKEDIR和TMAKEPATH的时候系统自动使用自己1.7版本的tmake,所以出错。
#cd qt
#make clean 这里似乎没有必要,不过建议执行一下
#make -C src 注意:-C 选项是指在编译是先转到src目录(不能自己直接转到在src目录make哦,因为我试过了,结果是失败)
#cd ..
#cd qtopia/src  开始编译在PC上可以执行的qpe了
#./configure -platform linux-generic-g++
#make 
    大约半个小时就可以编译完成
    完成后打开任意一个终端,输入
#qvfb &
    打开另外新终端,输入
#qpe &
    切换到老终端,就可以看到qpe在虚拟缓冲器qvfb上运行的界面,代表你编译PC上的qpe成功了
    有时候出现con't fine dev/fb0
    只要在/etc/prioile文件中,输入
export QWS_DLS_DISPLAY=QVFb:0
    注销一次(有个可以立即生效的方法,我忘记了),就可以了
    编译的过程大概就是这样,这已经是最简单的过程,在Qtopia的编译中会遇到更复杂,更繁琐的问题。
 

[!--empirenews.page--](二)交叉编译qpe
    现在我们开始交叉编译qpe吧,不过要做好心理准备,因为整个过程将会遇到各种各样的问题, 失败是很平常的,关键是我们要挺过来,坚持和摸索是我们每一个计算机工作者的法宝,让我们开始吧,和PC上不同的地方我会用红色显示出来!
    首先我们要准备编译资料,商家提供以下编译资料:
tmake-1.11.tar.gz  ,qt-embede-2.3.7.tar.gz , qt-x11-2.3.2.tar.gz,qt-free-1.7.tar.gz,这些对编译PC上的QT/E的qpe足够了,不过在交叉编译qpe的时候,还差两份资料:e2fsprogs.1.35.tar.gz,jpegsrc.v6b.tar.gz,所以必须去网站上下载,也可以向别人索要。
    同样我在/yehuo2410/下建立目录qt_arm作为交叉编译目录
好!我们开始分析脚本:
#cd /yehuo2410/qt_arm (拷贝上述所有压缩包到该目录包括e2fsprogs-1.35.tar.gz和jpegsrc.v6b.tar.gz两个压缩包)
当前目录为/yehuo2410/qt_arm
#tar xzvf  +各个压缩包,解压到/yehuo2410/qt_arm,记得要解压e2...和jpegsrc....两个包哦
#mv tmake-11 tmake
#mv qt-2.3.7.tar.gz qt
#mv qt-2.3.2.tar.gz  qt-x11
#mv qt-free-1.7.tar.gz qtopia

#cd qt-x11  转到这个目录开始编译相应的工具
#export QTDIR=$PWD  配置当前QTDIR
#echo yes | ./configure -static -ro-xft -no-opengl -no-sm  形成Makefile文件
#make -C src/moc 编译形成moc(元对象编译器)工具
#cp src/moc/moc bin  拷贝上一步生成的moc到当前目录的bin
#make -C src  这一步是必须的
以下两步形成设计器designer和虚拟帧缓冲器qvfb
#make -C tools/designer
这时候designer工具不会在tools/designer下形成,而是在当前目录(qt-x11的bin目录)下形成,故不用拷贝,你会发现qt-x11/bin下多了uic,和designer工具,uic首先形成,因为designer在编译是要用到uic工具,uic工具是qt中用来处理.ui文件的工具。
#make -C tools/qvfb
#cp tools/qvfb bin 

#strip bin/uic bin/moc bin/designer bin/qvfb 是对各个工具可执行文件进行节优化
#cp /bin/* ../qt/bin  拷贝这些工具到 qt-x11的兄弟目录qt中的bin目录中,qt/bin中有三个文件:findtr,
qt20fix,qtrename140,而qt-x11/bin中也有,拷贝的时候系统问题是否覆盖(qt-x11/bin里的这三个文件是否覆盖qt/bin里的这三个文件?),我选择是。
# cd ..
下面开始配置环境变量,很多脚本都这样写
#export QTDIR=$PWD/qt
#export QTEDIR=$QTDIR
#export QPEDIR=$PWD/qtopia
#export TMAKEDIR=$PWD/tmake
#export TMAKEPATH=$TMAKEDIR/llib/qws/linux-arm-g++(常规g++编译器)这点就和PC上的不同了,qws目录中有很多包括手机,PDA和ARM之类的g++编译器。
#export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH
#export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH 配置了这里就不用配置
/etc./ld.so.conf文件了,同样,为了保险,我把上述信息写到了/etc/profile文件中并且在/etc/profile中的$PWD替换为/yehuo2410/qt_arm,我们不用担心以前编译的PC版本的qpe会受到影响,当我们真正要用到PC版本的qpe的时把/etc/profile里面的这一部分涉及的/yehuo2410/qt_arm字符修改成/yehuo2410/qt_x86字符就可以了,当然,设置完成以后注销系统以生效。
#cd ..
#cd qt
#make clean
    再次强调以下步骤是必要的,否则会出现cannot fine -lqte问题
#cp $QPEDIR/src/qt/qconfig-qpe.h src/tools
    在下一步中我发现编译PC上的qpe时做到这一步时,会问你两次(都回答yes),而这里只会问一次,当时我感到费解,因为和厂家提供的脚本不一样(厂商提供的脚本是echo yes;echo no) ,我担心是哪里出错了,但是我依然往下做,直到最后也没有出现这里的相关问题,所以就不用担心
#echo yes|./configure -platform linux-arm-g++ -qconfig  qpe -qvfb -depths 16,24,32
#make -C src
 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

上海2024年5月13日 /美通社/ -- 5月8日,浦东新区国资委组织陆家嘴集团等9家区属企业与立邦中国召开合作交流会,旨在贯彻落实浦东新区区委、区政府工作要求,进一步放大进博会溢出带动效应,持续扩大区属企业与进博会重...

关键字: BSP 数字化 自动化立体仓库 智慧园区

上海2024年5月13日 /美通社/ -- 在数字化时代,高效的税务管理和ERP系统成为企业发展的关键。为了满足这一需求商应信息科技与Exact Software 易科软件就金四全电票税系统与ERP系统集成及商务合作建立...

关键字: AC 软件 BSP 数字化

北京2024年5月13日 /美通社/ -- 5月11日,鲲鹏昇腾开发者大会2024期间,华为举办"昇思AI框架及大模型技术论坛",软通动力数字基础设施与集成事业部总经理谢睿受邀出席、软通动力...

关键字: AI 模型 BSP 精度

2023/24 财年收入降至 15.50 亿欧元(上一年同期:17.91 亿欧元) 调整后息税折旧摊销前利润率为 24.8% 居林和莱奥本的半导体封装载板生产将于 2024/25 财年末开始 2024/...

关键字: BSP 半导体封装 印制电路板 汽车

上海2024年5月14日 /美通社/ -- 固特异 SightLine 智能轮胎技术解决方案荣获中国电子行业主流媒体《中国电子报》颁发的 2024 汽车芯片优秀产品奖。本次获奖是对固特异研发成果的高度认可。固特异致力于引...

关键字: 汽车芯片 轮胎 BSP SI

慕尼黑2024年5月9日 /美通社/ -- TÜV南德意志集团(以下简称"TÜV南德")持续保障安全、可靠及可持续发展。作为全球化的服务提供商,TÜV南德2023年全年营收达约31亿欧元,首次突破30亿欧元大关,同比增长...

关键字: BSP 可持续发展 数字化 人工智能

凭借深度学习技术和SmartBid产品,百度国际MediaGo获得美国商业奖认可 旧金山2024年5月6日 /美通社/ -- 第22届美国商业奖(American Business Award®)近日发布获奖名...

关键字: MEDIA GO SMART BSP

上海2024年4月17日 /美通社/ -- 在2024 F1中国站即将拉开帷幕之际,高端全合成润滑油品牌美孚1号今日举办了品牌50周年庆祝活动。三届F1年度车手总冠军马克斯•维斯塔潘也亲临现场,共同庆祝这一里程...

关键字: BSP 汽车制造 行业标准 产品系列

北京2024年4月17日 /美通社/ -- 2024年4月13日,由北京康盟慈善基金会主办的"县域诊疗,规范同行"——肿瘤诊疗学术巡讲项目首站在广州隆重召开。本次会议邀请全国多位肺癌领域专家和县域同道...

关键字: AI技术 医疗服务 BSP 互联网

海口2024年4月16日 /美通社/ -- 4月14日,在中法建交60周年之际,科学护肤先锋品牌Galenic法国科兰黎受邀入驻第四届中国国际消费品博览会(以下简称"消博会")法国馆。Galenic法...

关键字: NI IC BSP ACTIVE
关闭
关闭