分享

QTE 交叉编译(PC部分)

 zwsj 2013-11-18

编译PC上的QT到编译ARM上的QT(交叉编译PQE)的过程,首先说说编译PC上的QT/E,我起初的时候不知道编译PC上的QT/E编译qpe和交叉编译后的qpe有什么不同,后来才发现的确有不同点: PC上的QTE是调用PC的库,ARM上的QTE因为在使用中精简了很多指令,所以需要一个交叉的工具链来进行交叉编译,从而编译出一个适用于ARM的QTE库.交叉工具是arm/2.95.3版本!cross-2.95.3.tar.bz2
下面我们来一步步分析我的编译过程,
交叉编译工具是2.95.3的, 放到了/usr/local/arm/目录中,然后在/etc/profile中配置了它的路径

首先在创建目录/home/mainframe/qt_x86用于编译QT/E (mainframe 是我的用户名,那么你的....)

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 /home/mainframe/qt_x86

#tar xzvf +各个压缩包,解压到x86_qt

以下建立通用的目录
#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文件 (configure 后面的参数按自己的实际需要定制.)
#make -C src/moc 编译形成moc(元对象编译器)工具
#cp src/moc/moc bin 拷贝上一步生成的moc到当前目录的bin
#make -C src 这一步是必须的
以下两步形成设计器designer和虚拟帧缓冲器qvfb
#make -C tools/designer
#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

   在这里强烈建议在x86_qt目录下建立一个 Env 文件,把这些环境变量添加进去,在使用到这些环境变量的时候执行 . Env   就行了,这样有个好处,在编译ARM 的QTE 的时候不用进 /etc/profile 里面修改,但是在每一次使用都必须执行,而且只在当前终端有效.在编译ARM的时候如法炮制一个 Env 就OK了。
#cd qt
#make clean 这里似乎没有必要,不过建议执行一下

#./configure -no-sm -no-xft -thread -system-jpeg -gif                                                                                   

#make - C src 注意:-C 选项是指在编译是先转到src目录(不能自己直接转到在src目录make哦,因为我试过了,结果是失败)
#cd ..
#cd qtopia/src 开始编译在PC上可以执行的qpe了
#./configure -platform linux-generic-g++
#make 
#qvfb &
#qpe &
有时候出现con't fine dev/fb0
只要在/etc/prioile文件中,输入
export QWS_DLS_DISPLAY=QVFb:0

关于找不到uuid.h和cannot find -lqtopia的问题,这里说明它的解决方法。

方法一,

到网上下载一个e2fsprogs-1.35.tar.gz包,然后执行:

#tar xzf e2fsprogs-1.35.tar.gz
#cd e2fsprogs-1.35
#./configure -host=arm-linux -with-cc=arm-linux-gcc -with-linker=arm-linux-ld -enable-elf-shlibs -prefix=/usr/local/arm/2.95.3/arm-linux
#make
#make install lib/uuid/

将e2fsprogs-1.35/lib/目录下uuid的文件夹复制到/armsys2410/qt_arm/qtopia/include下
将e2fsprogs-1.35/lib/中的libuuid.a libuuid.so libuuid..so.1 libuuid.so.1.2复制到/armsys2410/qt_arm/qtopia/lib下。

这里是arm 版的,PC的 #./configure   --enable-elf-shlibs

下面同样,只是uuid的库要拷到PC的下面!~:)相信你没那么笨。。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多