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