文章來源:http://weibing.blogbus.com/logs/4384745.html
Qtopia Core 4是QT/embedded的最新版,網上找很久都沒有相關教材,儘是QT/embedded 2的版本。我剛學,乾脆就直接上最新版 ^_^ 費了不少時間,作個記錄,方便有需要的朋友...
我的目標平台是三星的s3c2410,linux2.4核心,開發平台是RHEL.AS.v4.0.Update2,直接從ftp: //ftp.scau.edu.cn/linux_unix/VMware_OS/RedHat_AS_4/Red Hat Enterprise Linux 4.vmdk下載的虛擬機器鏡像。經過這三天的使用,我認為虛擬機器構建的系統有兩個特點:一是慢,編譯整個Qtopia Core 4用了近五個小時,而真機只需一個半鐘;二是使用方便,可以直接在windows通過pietty串連,一邊查資料,一邊配置系統,而且工作環境改變時只 需將鏡像直接移到另外一台電腦,馬上可以工作 ^_^
下面是Qtopia Core 4移植過程:
1. 下載交叉編譯鏈ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2。不要用cross-2.95.3,Qtopia Core 4指明要3.2以上的版本。網上的教程大多就拿cross-2.95.3編譯QT/embedded 2的...解壓縮到/usr/local/arm目錄下
tar xjvf linux-gcc-3.4.1.tar.bz2 -C /
設定交叉編譯的環境變數:
echo 'export PATH=/usr/local/arm/3.4.1/bin:$PATH' >> /root/.bashrc
2. 下載Qtopia Core 4的原始碼,建議到www.qtopia.org.cn下載,速度比www.trolltech.com快,迅雷速度就不錯。我下的是qtopia-core-opensource-src-4.2.2.tar.gz,解壓
tar zxvf qtopia-core-opensource-src-4.2.2.tar.gz
cd qtopia-core-opensource-src-4.2.2
./configure -embedded arm -xplatform qws/linux-arm-g++ -depths 4,8,12,16 -no-qt3support
gmake (這個過程最漫長...)
gmake install (需root 許可權)
設定Qt的環境變數:
echo 'export PATH=/usr/local/Trolltech/QtopiaCore-4.2.2-arm/bin:$PATH' >> /root/.bashrc
這樣還有一個字型目錄的問題,搞了很久才找到原因,後面講述。
3. 編譯Hello World,代碼參考Qt的文檔,儲存未 hello.cc 。
qmake -project
qmake
make
將檔案移到目標平台,我是通過nfs mount到/mnt/nfs目錄下
mount -t nfs -o nolock 202.192.33.100:/home/nfs /mnt/nfs
export QTDIR=/mnt/nfs
export LD_LIBRARY_PATH=$QTDIR/lib
$QTDIR/lib裡面放程式要用到的庫和字型
lrwxrwxrwx 1 root root 18 Jan 25 20:39 /home/nfs/new/lib/libQtCore.so.4 -> libQtCore.so.4.2.2
-rwxr-xr-x 1 root root 2082044 Jan 25 20:38 /home/nfs/new/lib/libQtCore.so.4.2.2
lrwxrwxrwx 1 root root 17 Jan 24 21:44 /home/nfs/new/lib/libQtGui.so.4 -> libQtGui.so.4.2.2
-rwxr-xr-x 1 root root 7100212 Jan 24 21:42 /home/nfs/new/lib/libQtGui.so.4.2.2
lrwxrwxrwx 1 root root 21 Jan 25 20:36 /home/nfs/new/lib/libQtNetwork.so.4 -> libQtNetwork.so.4.2.2
-rwxr-xr-x 1 root root 369700 Jan 25 20:35 /home/nfs/new/lib/libQtNetwork.so.4.2.2
可以根據提示從/usr/local/Trolltech/QtopiaCore-4.2.2-arm/lib/複製過來,注意軟連結。如提示缺失libstdc++.so.6等庫檔案,可從/usr/local/arm/3.4.1/arm-linux/lib複製過來。
最後一個問題就是剛才提到的字型問題。網上的教程都是說將fontdir放到$QTDIR/lib/fonts目錄下即可。但我編譯的這個版本總不行,提 示 Cannot find font definition file /usr/local/Trolltech/QtopiaCore?
嘗試多次後才發現這個目錄就是QtopiaCore的安裝目錄。建立一個軟連結搞定
ln -s /mnt/nfs /usr/local/Trolltech/QtopiaCore-4.2.2-arm
文檔提示可以用-prefix 指定安裝目錄,但這也不是辦法,configure --help裡相關的還有-R和-rpath,可以指定連結庫位置。只是虛擬機器太慢,現在不敢隨便亂make了。
沒想到一個 Hello World 用了3天......