我用的是飞凌公司的TE2 2440II的开发板,拿到开发板时就按照随光盘自带的是用户手册上的说明按部就班的进行操作,由于刚开始接触Linux和QT,编译qtopia-free-2.2.0走了很多弯路,竟然反复进行了N多次,费时1个多月,才将qtopia-free-2.2.0编译通过。
刚开始是完全按照手册上的一步一步的进行,但编译支持qtopia-free-2.2.0的库文件就遇到了很大的麻烦,总是编译报错,后来发现,手册上的有写步骤存在笔误,最后是编译qtopia-free-2.2.0所需的库文件(手册上的armlib和arminclude)从飞凌公司获取的已编译完成的,直接拿过来用的,编译成功了。期间在飞凌的论坛上和QQ群里发了不少帖子求助,自己也查阅了相关的资料,还好,最终还是自己编译成功了。下面把我的编译方法写出来,以备忘,也希望能给准备做这些事情的朋友提供一个思路。
我的开发环境:
【硬件】:当时我是在研华的工控机上编译的,CPU:P4 2.4 内存:512M 硬盘:60G(配置不是很高,编译时间比较长)和TE2440-II。
TE2440开发板
【操作系统】:RedHat 9 完全安装。
【交叉编译器】:cross-2.95.3
【用户】:root
1.编译前的一些准备工作:
1.1 建立目录
1. 建立编译qtopia-free-2.2.0所需要的目录
编译qtopia-free-2.2.0所需要的目录有:
/usr/local/arm (交叉编译器cross-2.95.3所在目录)
/root/yizhi (编译qtopia-free-2.2.0的总目录)
/root/yizhi/armlib (编译软件得到qtopia所需要的库文件全部放在这里)
/root/yizhi/include (编译软件得到qtopia所需要的头文件全部放在这里)
1.2 安装交叉编译器(已安装cross-2.95.3的这一步骤省略!跳至1.3)
之前看到有个cross-3.4.1.tar.bz2,觉得高版本的应该要比低版本的好用,于是就直接安装了cross-3.4.1,但用cross-3.4.1总是不能把qtopia-free-2.2.0编译成功,后来才知道不是那么回事,只能用cross-2.95.3,于是又安装了cross-2.95.3。
1.解压cross-2.95.3.tar.bz2
把cross-2.95.3.tar.bz2复制到在1.1中建立的目录/usr/local/arm下,在终端中进行如下操作:
#cd /usr/local/arm
#tar jxvf cross-2.95.3.tar.bz2
等待解压完成。
2.设置路径变量
由于刚才是在/usr/local/arm的目录下安装的cross-2.95.3,所以设置路径为:PATH=/usr/local/arm/2.95.3/binPATH,然后可以查看arm-linux-gcc的版本情况,在终端中进行以下操作:
#export PATH=/usr/local/arm/2.95.3/binPATH
#arm-linux-gcc -v
这样就把交叉编译器的地址变量设置好了,但这样设置路径变量的方法只在此终端中生效,对其他的终端无效,若要设置对所有用户所有终端都有效的路径变量,在/etc/profile 中最后一行添加“export PATH=/usr/local/arm/2.95.3/binPATH”,详见我的“在Linux里设置环境变量的方法(export PATH) ”的文章(http://blog.chinaunix.net/u2/86665/showart_1669729.html)。
1.3 交叉编译qtopia-free-2.2.0
1.解压文件
将armlib.tar和arminclude.tar复制到/root/yizhi目录下,分别进行解压,在终端中进行如下操作:
#cd /root/yizhi (若已在此目录下,可省略!)
#tar -xvf armlib.tar
#tar -xvf arminclude.tar
解压完成后,编译qtopia-free-2.2.0所需的库文件都在/root/yizhi/armlib目录下,头文件都在/root/yizhi/arminclude目录下。
将qtopia-free-src-2.2.0.tar.gz复制到/root/yizhi目录下,执行解压操作,得到/root/yizhi/qtopia-free-2.2.0目录。在终端中进行如下操作:
#cd /root/yizhi (若已在此目录下,可省略!)
#tar zxvf qtopia-free-src-2.2.0.tar.gz
2.编译修改工作
(1)在终端中进行如下操作:
#vi /root/yizhi/qtopia-free-src-2.2.0/qtopia/mkspecs/qws/linux-arm-g++/qmake.conf
将QMAKE_LIBS_QT = -lqte 改为
QMAKE_LIBS_QT = -lqte –lpng –lz –luuid –ljpeg
(2)如果想让qtopia支持鼠标,需要修改/root/yizhi/qtopia-free-src-2.2.0/qtopia/src/qt/qconfig-qpe.h文件,在终端中进行以下操作:
#vi /root/yizhi/qtopia-free-src-2.2.0/qtopia/src/qt/qconfig-qpe.h
注释如下部分:
/*
#ifndef QT_NO_QWS_CURSOR
#define QT_NO_QWS_CURSOR
#endif
#ifndef QT_NO_QWS_MOUSE_AUTO
#define QT_NO_QWS_MOUSE_AUTO
#endif
#ifndef QT_NO_QWS_MOUSE_PC
#define QT_NO_QWS_MOUSE_PC
#endif
*/
(3)复制文件
在终端中进行如下操作:
#cp /root/yizhi/qtopia-free-src-2.2.0/qtopia/src/qt/qconfig-qpe.h /root/yizhi/qtopia-free-src-2.2.0/qt2/src/tools
#cd /root/yizhi/qtopia-free-src-2.2.0/qtopia/src/libraries/qtopia
#cp custom-linux-ipaq-g++.cpp custom-linux-arm-g++.cpp
#cp custom-linux-ipaq-g++.h custom-linux-arm-g++.h
(4)将/usr/local/arm/2.95.3/arm-linux/sys-include/linux中的videodev.h文件中的#include <liunx/version.h>一行注释。在终端中的操作为:
#vi /usr/local/arm/2.95.3/arm-linux/sys-include/linux/videodev.h
3.设置环境变量、编译及安装
(1)设置编译qtopia的环境变量。在终端中进行如下操作:
#export QTDIR=/root/yizhi/qtopia-free-2.2.0/qt2
#export QPEDIR=/root/yizhi/qtopia-free-2.2.0/qtopia
#export LD_LIBRARY_PATH=$QTDIR/libQPEDIR/libLD_LIBRARY_PATH
#export TMAKEDIR=/root/yizhi/qtopia-free-2.2.0/tmake
#export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
#export PATH=/usr/local/arm/2.95.3/binPATH
(2)创建交叉编译后的qtopia文件夹。在终端中执行:
#mkdir /root/yizhi/qtopia
(3)生成Makefile文件。在终端中执行:
#./configure –qte “-embedded –xplatform linux-arm-g++ -qconfig qpe –no-qvfb –depths 8,16,24,32 –no-xft –system-jpeg –system-libpng –system-zlib –gif –thread –release –I/root/yizhi/arminclude –L/root/yizhi/armlib –lpng –lz –luuid -ljpeg” –qpe ‘-xplatform linux-arm-g++ -edition pda –displaysize 800x600 –I/root/yizhi/arminclude –L/root/yizhi/armlib –prefix=/root/yizhi/qtopia’
(4)编译qtopia(此过程时间较长)。在终端中执行:
#make
(5)安装qtopia的交叉编译环境。在终端中执行:
#make install
编译完成以后,在/root/yizhi目录下出现一个qtopia目录,在/root/yizhi/qtopia/lib目录下可以看到:
libqte.so libqte.so.2 libqte.so.2.3 libqte.so.2.3.12
这四个文件,这是编译qte所需的库文件,将所有需要支持的库文件都放到新生成的qtopia/lib中,在终端中执行:
#cp /root/yizhi/armlib/*.so* /root/yizhi/qtopia/lib
OK,现在就将QTE环境编译成功了。
注:如果在编译的过程中出错,在重新make前需要先执行make clean,然后再./configure,再执行make的操作。
编译安装qtopia-free-2.2.0前要先编译安装qt-embedded-2.3.7,而安装qt-embedded-2.3.7之前要先安装qt-x11-2.3.2,所以,它们的安装顺序是:先安装qt-x11-2.3.2,再安装qt-embedded-2.3.7,最后安装qtopia-free-2.2.0。
安装qt-x11-2.3.2和qt-embedded-2.3.7,需要3个软件安装包:tmake工具安装包,Qt/Embedded安装包,Qt的X11版的安装包。
· tmake1.11 或更高版本:生成Qt/Embedded应用工程的Makefile文件。
· Qt/Embedded:Qt/Embedded安装包。
· Qt 2.3.2 for X11:Qt的X11 版的安装包,产生x11开发环境所需要的两个工具。
注意
这些软件安装包都有许多不同的版本,由于版本的不同会导致这些软件在使用时可能引起的冲
突,为此必须依照一定的安装原则,Qt/Embedded安装包的版本必须比Qt for X11的安装包的
版本新,这是因为Qt for X11 的安装包中的两个工具uic 和designer 产生的源文件会和
Qt/Embedded的库一起被编译链接,因此要本着“向前兼容”的原则,Qt for X11 的版本应比
Qt/Embedded的版本旧。
1.安装tmake
用户可使用普通的解压缩即可,注意要将路径添加到全局变量中去,如下所示:
tar zxvf tmake-1.11.tar.gz
export TMAKEDIR=$PWD/tmake-1.11
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
export PATH=$TMAKEDIR/binPATH
2.安装Qt/X11 2.3.2
用户也可以在configure后添加一定的参数,如“-no-opengl”或“-no-xfs”,
可以键入命令“./configure –help”来获得一些帮助信息。
3.安装Qt/Embedded 2.3.7
这里使用常见的解压命令及安装命令即可,要注意这里的路径与不同的系统有关,
要根据实际情况进行修改。另外,这里的configure命令带有参数“-qconfig –qvfb –depths 4,8,16,
32”分别为指定Qt嵌入式开发包生成虚拟缓冲帧工具qvfb,并支持4,8,16,32 位的显示
颜色深度。另外读者也可以在configure 的参数中添加“-system”、“-jpeg”或“gif”命令,
使Qt/Embedded平台能支持jpeg、gif格式的图形。
Qt/Embedded 开发包有5 种编译范围的选项,使用这些选项可控制Qt 生成的库文件
的大小。如命令make sub-src 指定按精简方式编译开发包,也就是说有些Qt 类未被编译。
其他编译选项的具体用法可参见“./configure–help”命令查看。精简方式的安装步骤若
下所示:
tar zxvf qt-embedded-2.3.7.tar.gz
cd qt-2.3.7
export QTDIR=$PWD
export QTEDIR=$QTDIR
export PATH=$QTDIR/binPATH
export LD_LIBRARY_PATH=$QTDIR/libLD_LIBRARY_PATH
./configure -qconfig local-qvfb -depths 4,8,16,32
make sub-src
TE2440工程师笔记之--交叉编译qtopia-free-2.2.0
最新推荐文章于 2021-05-08 23:35:29 发布