天天看点

fc4下成功编译qt-x11-2.3.2 qt-embedded-2.3.10 qtopia-2.1.1 tmake-1.13

FC4默认安装的GCC4.0不可以用,而是要安装GCC3.2即这两个包:compat-gcc-32(CD3)&compat-gcc-32-c++ (CD4)

编译qt-embedded-2.3.7.tar.gz

需要制定CPATH PATH LD_LIBRARY_PATH 到gcc-3.3的目录下

/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/

CPATH=/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include:$CPATH

PATH =/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include:$PATH

LD_LIBRARY_PATH =/usr/lib/gcc-lib/i386-redhat-linux/3.2.3:$ LD_LIBRARY_PATH

#编译qtopia-free-1.7.0.tar.gz

#要替换

#$QPEDIR/configs/linux-generic-g++-shared

#$QPEDIR/configs/linux-generic-g++-shared-debug

#而且要把LINK个gcc 换成g++

编译过程中不能用fc4自带的gcc4.0.0编译要用gcc3.2.3来编译,所以要将配置文件中的g++全部替换为g++32,gcc全部替换为

gcc32,主要替换的有这几个地方

$QTEDIR/configs/linux-x86-g++-shared

$QTEDIR/configs/linux-x86-g++-shared-debug

$TMAKEDIR/lib/qws/linux-x86-g++/tmake.conf

$TMAKEDIR/lib/linux-x86-g++/tmake.conf

$QPEDIR/mkspecs/qws/linux-x86-g++/qmake.conf

还有可能以上目录中的linux-generic-g++里的配置文件替换编译参数就可以了

其实就是根据

QMAKESPEC=和TMAKEPATH=

进行替换

环境变量

TMAKEDIR=/home/arm/tmake-1.13

QT2DIR=/home/arm/qt-x11-2.3.2

QTEDIR=/home/arm/qt-embedded-2.3.10

QPEDIR=/home/arm/qtopia-2.1.1

QT3DIR=/usr/lib/qt-3.3

QTDIR=$QTEDIR

DQTDIR=$QT3DIR TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++

QMAKESPEC=linux-x86-g++

PATH=$QT2DIR/bin:$QTEDIR/bin:$QPEDIR/bin:$DQTDIR/bin:$QT3DIR/bin:$QTDIR/bin:$TMAKEDIR/bin:$PATH

LD_LIBRARY_PATH=$QT2DIR/lib:$QTEDIR/lib:$QPEDIR/lib:$DQTDIR/lib:$QT3DIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH export TROLLTECHDIR TMAKEDIE QT2DIR QTEDIR QPEDIR QT3DIR QTDIR DQTDIR TMAKEPATH QMAKESPEC PATH LD_LIBRARY_PATH CPATH

  在编译qvfb的时候有可能遇到ld找不到库的问题

改前LIBS=$(SUBLIBS) -L$(QTDIR)/lib -L/usr/X11R6/lib -lqt -lXext -lX11 -lm

改后LIBS=$(SUBLIBS) -L$(QTDIR)/lib -L/usr/X11R6/lib -L$(QTEDIR)/lib -lqt -lXext -lX11 -lm -lqte

只要添加$QTEDIR/lib库就可以了在后面参数中添加-lqte就可以了,这样编译文件没问题 按这样的步骤执行可能不能生成frame buffer后我改用静态连接的办法实现了该功能

1.编译qt-2.3.2

cd $QT2DIR

export TMAKEPATH=$TMAKEDIR/lib/linux-x86-g++

export QTDIR=$QT2DIR

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

./configure -static -no-xft -no-opengl -no-sm

make

mkdir $QTEDIR/bin

cp bin/uic $QTEDIR/bin/

2.编译qvfb

export TMAKEPATH=$TMAKEDIR/lib/linux-g++

export QTDIR=$QT2DIR

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

cd $QTEDIR/tools/qvfb

tmake -o Makefile qvfb.pro

make

mv qvfb $QTEDIR/bin/

3.编译qt/embedded

cd $QTEDIR

cp $QPEDIR/src/qt/qconfig-qpe.h $QTEDIR/src/tools

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++

export QTDIR=$QTEDIR

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

./configure -debug -qconfig qpe -qvfb -depths 4,8,16,32 -keypad-mode -system-jpeg -gif

编译qt/e2.3.7 //原因2.3.7 没有-keypad-mode选项

./configure -debug -qconfig qpe -qvfb -depths 4,8,16,32 -system-jpeg -gif

make sub-src

4.编译qtopia

cd $QPEDIR

export QTDIR=$QTEDIR

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH ./configure -debug -platform linux-x86-g++

make 编译qtopia的过程最重要的就是环境的设置问题了,很多情况下就是因为环境设置不正确的问题而导致编译

出错或者是编译成功而运行的时候出错,这些问题都要仔细研究一下她的内部结构才可以解决,不要只是找到网上的一些资料然后就完全按

她的去做,这样成功的可能性不会很大,这些东西还是要靠自己一步步去摸索.

由于qtopia没有提供启动脚本所以用下面的启动脚本来启动qtopia界面

#!/bin/sh

TMAKEDIR=/home/arm/tmake-1.13

QT2DIR=/home/arm/qt-x11-2.3.2

QTEDIR=/home/arm/qt-embedded-2.3.10

QPEDIR=/home/arm/qtopia-2.1.1

QT3DIR=/usr/lib/qt-3.3

QTDIR=$QTEDIR

DQTDIR=$QT3DIR TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++

QMAKESPEC=linux-g++

PATH=$QT2DIR/bin:$QTEDIR/bin:$QPEDIR/bin:$DQTDIR/bin:$QT3DIR/bin:$QTDIR/bin:$TMAKEDIR/bin:$PATH

LD_LIBRARY_PATH=$QT2DIR/lib:$QTEDIR/lib:$QPEDIR/lib:$DQTDIR/lib:$QT3DIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH export TROLLTECHDIR TMAKEDIE QT2DIR QTEDIR QPEDIR QT3DIR QTDIR DQTDIR TMAKEPATH QMAKESPEC PATH LD_LIBRARY_PATH

findproc() {

        /bin/ps -e | /bin/sed -n -e '//<'$1'/>/ s/^ */([0-9][0-9]*/).*//1/p'

} killproc() {

        pid=`findproc $1`

        [ "$pid" != "" ] && kill $pid

} killall quicklauncher

killall qpe

killall qvfb

[ -x /sbin/fuser ] && ( /sbin/fuser -kn tcp 4242 || /sbin/fuser -kn tcp 4243 )

[ -x /bin/fuser ] && ( /bin/fuser -kn tcp 4242 || /bin/fuser -kn tcp 4243 ) echo "Stopping common sound deamons..."

artsd_pid=`findproc artsd`

[ "$artsd_pid" != "" ] && kill $artsd_pid

esd_pid=`findproc esd`

[ "$esd_pid" != "" ] && kill $esd_pid echo "Starting qvfb..."

qvfb -width 160 -height 280 & sleep 3s echo "Starting Qtopia 2.1.1..."

HOME=/home/arm/qtopia-2.1.1/image/opt/Qtopia/demohome qpe echo "Restarting killed sound deamons..."

[ "$artsd_pid" != "" ] && artsd &

[ "$esd_pid" != "" ] && esd &

其中pcdev是我开始安装时的环境设置脚本

#!/bin/bash 设置TMAKEDIR、QT2DIR、QTEDIR、QPEDIR、QT3DIR、TMAKEPATH、QMAKESPEC、PATH和LD_LIBRARY_PATH这几个变量就可以了

继续阅读