最近拿了一块飞凌的TE2440开发板来做一些QT以及串口相关的开发,本来按照飞凌的手册是用QTopia 2.2.0,但是使用GCC 3.4.1在Fedora上一直也编译不过去,后来才转用Ubuntu并且换成QT 4.6.4来编译(试了4.7.3发现和GCC 3.4.1有兼容性问题,在板子上跑不起来),总算基本完成了,也记录下来以备之后需要查阅。
步骤如下:
前期准备:
1. 当然需要交叉编译器,我使用的是arm gcc 3.4.1
2. 还需要在编译机器上安装autoconf, automake, libtool
3. 解压tslib(触摸屏所需),configure参数大致如下:
export PATH=/usr/local/arm/3.4.1/bin:$PATH
export TOOLCHAIN=/usr/local/arm/3.4.1
export TB_CC_PREFIX=arm-linux-
export PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-linux
./autogen.sh
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
./configure --host=arm-linux --cache-file=arm-linux.cache --enable-input=no --with-plugin=plugins --prefix=/usr/local/arm/tslib
make
make install
之后比较重要的一个步骤是要把plugins/.libs这个目录copy到/usr/local/arm/tslib/lib/ts下,这个是在目标板上要用到的。
然后就是编辑一下/usr/local/arm/tslib/etc/ts.conf,要把里面的一个module_raw起始的行去掉#号和空格,一般都是module_raw input,但是我用的这个板子上用的试h3600。
现在就进入到编译QT的工作上了:
1. 从QT官网http://qt-project.org/下载qt-everywhere-opensource-src-4.6.4.tar.gz
2. 在Linux上解压
3. 基本上我就用了一个脚本来编译:
#/bin/bash
export PATH=/usr/local/arm/3.4.1/bin:$PATH
export PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-linux
export TB_CC_PREFIX=arm-linux-
export TOOLCHAIN=/usr/local/arm/3.4.1
cd qt-everywhere-opensource-src-4.6.4
echo yes | ./configure -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -prefix /opt/qt-4.6.4 -I /usr/local/arm/tslib/include -L /usr/local/arm/tslib/lib -D__ARM_ARCH_5TEJ__
make 2>&1 | tee ../qte4.6.4Makelog && make install