天天看點

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這幾個變量就可以了

繼續閱讀