QT/Embedded 2.3.8 MX21ADS板移植

QT/Embedded 现在的最新版本是Qtopia Core 4,网上找很久都没有相关教材,还是稳打稳扎用QT/embedded 2的版本来做。

目标平台是Freescale MX21,linux2.4内核,开发平台是RH9,下面是移植过程:
1. 下载qt-embedded和tmake
ftp://ftp.qtopia.org.cn/mirror/ftp.trolltech.com/qt/source/qt-embedded-2.3.8.tar.gz
ftp://ftp.qtopia.org.cn/mirror/ftp.trolltech.com/freebies/tmake/tmake-1.13.tar.gz
cd /work
tar -zxf qt-2.3.8-embedded.tar.gz
cd qt-2.3.8
tmake解压, 任意目录皆可,只要设置好TMAKEPATH环境变量,这里为了方便将tmake解压到tmake目录.
2 设置环境变量
TMAKE=/work/qt-2.3.8/tmake
TMAKEPATH=/work/qt-2.3.8/tmake/lib/qws/linux-arm-g++
QTDIR=/work/qt-2.3.8/
QTEDIR=/work/qt-2.3.8/

PATH=$TMAKE/bin:$PATH
export PATH QTDIR QTEDIR TMAKEPATH

3. 修正bug
tmake和qt-embedded-2.3.8在arm平台上有几个小bug, 在链接时使用arm-linux-gcc而不是arm-linux-g++
首先修正tmake
打开tmake/lib/qws/linux-arm-g++/下的tmake.conf
将其中的TMAKE_LINK和TMAK_LINK_SHLIB都修正为arm-linux-g++
TMAKE_LINK = arm-linux-g++
TMAKE_LINK_SHLIB = arm-linux-g++
然后就是qt-embedded下configs/linux-arm-g++{static/shared/static-debug/shared-debug}这几个arm配置中的定义SYSCONF_LINK SYS_CONF_LINK_SHLIB 都修正为arm-linux-g++

代码中也有一处:
src/kernel/qapplicaion_qws.cpp 中的2148行 beep函数, 好像arm是默认不处理sound的,所有要根据qsound.h中的QT_NO_SOUND宏将其修改一下

#ifndef QT_NO_SOUND

QSound *qt_beep_sound = 0;

void QApplication::beep()
{
    if ( qt_beep_sound )
    qt_beep_sound->play();
}
#else
void QApplication::beep()
{
}
#endif



4,配置编译
./configure -xplatform linux-arm-g++ -no-opengl -qt-libpng -qt-zlib -no-xft -static -no-qvfb -L/home/opt/mx21_tools/metrowerks/b56/Embedix/home/salem/project/MX21-b56/build/dev_image/usr/lib

make

如此简单,大公告成!
^_^

原文地址:https://www.cnblogs.com/xiaowangba/p/6314597.html