在Linux上開發(fā)Qt
本文介紹的是在Linux上開發(fā)Qt,對(duì)于這篇文章本人感覺很有成就感,因?yàn)槟憧赐曛螅悬c(diǎn)像越獄。那么看看本文的講解吧。
對(duì)于諾基亞不提供在Linux環(huán)境下的Symbian SDK這件事情,我已經(jīng)忍了很久了?,F(xiàn)在它終于邁出了一小步。
Qt Labs終于在幾天前推出了如何在Linux開發(fā)Qt for Symbian應(yīng)用的一篇博客,需要自己從源代碼編譯Qt for Symbian的版本。實(shí)話說(shuō),還不是很方便。如果你不著急用,還是靜待官方推出編譯好的安裝包吧,那時(shí)候跟編普通Qt for Linux應(yīng)用沒什么區(qū)別了,執(zhí)行qmake;make就能搞定。如果你和我一樣有編譯狂躁癥,或者build控,那么一起上路吧:),老外文章得貝得貝說(shuō)一大通,感覺步驟很多似的,其實(shí)沒那么多。
預(yù)備條件:因?yàn)槟壳暗?strong>Symbian SDK并非為L(zhǎng)inux專用,而是直接借用了Windows版本的,所以為了保證SDK中的那些工具能夠在Linux下使用,你需要先把Wine(Linux下的windows 模擬器)裝上。
下載Symbian SDK
需要下載兩個(gè)安裝包,這里使用S60 5th版本,另外Qt需要open c & cpp的插件。下載地址分別為
GNUPOC工具下載
gnupoc有點(diǎn)陌生,也是在Linux上開發(fā)symbian應(yīng)用的核心組件??梢詫nupoc拆開成gnu-poc來(lái)理解,就是gnu下的epoc環(huán)境。利用該工具可以將我們從windows下下載的symbian sdk安裝包解壓安裝到Linux環(huán)境中,GNUPOC下載地址為http://www.martin.st/symbian,選版本1.15即可。
Symbian SDK 安裝配置
將上面下載的GNUPOC解壓后,執(zhí)行以下三條命令
- cd gnupoc-package-1.15/sdk
- ./install_gnupoc_s60_50 ~/S60_5th_Edition_SDK_v1_0_en.zip ~/symbiansdk
- ./install_openc_16_s60 ~/work/s60_open_c_cpp_plug_in_v1_6_en.zip ~/symbiansdk
下載一個(gè)Symbian SDK的補(bǔ)丁文件,然后利用下面命令打上補(bǔ)丁
- cd ~/symbiansdk
- gunzip symbiansdk-gcce.gz
- patch -p0 < symbiansdk-gcce
下載arm編譯器
沒有特別好說(shuō)的,請(qǐng)下載arm-symbian編譯器,然后解壓
配置環(huán)境變量
將前面的安裝好的SDK以及編譯器中的一些工具,設(shè)置到個(gè)人用戶的.bashrc中
- export EPOCROOT=$HOME/symbian-sdk/
- QTDIR=$HOME/build/qt
- gcceDir= full/path/to/arm-2009q3/bin
- export PATH=$QTDIR/bin:$EPOCROOT/epoc32/tools:$gcceDir:$PATH
開始編譯吧
Qt源碼需要用到即將發(fā)布的Qt-4.7-beta版,我是直接使用http://qt.gitorious.org/qt/qt代碼倉(cāng)庫(kù)里的版本,然后在QTDIR目錄下執(zhí)行如下編譯命令
- $HOME/qt/configure -platform linux-g++ -xplatform symbian/linux-gcce -arch symbian -no-webkit -little-endian
- make
- cd src
- make sis
遇到的問(wèn)題
1. configure時(shí)提示無(wú)法判斷l(xiāng)ittel-endian還是big-endian
解決辦法:在configure命令參數(shù)中加入-little-endian選項(xiàng)
2. 在調(diào)用rcomp生成symbian資源文件時(shí)提示”can’t write UIDs to s60main.rsc”
原因: 因?yàn)閞comp調(diào)用了另外一個(gè)應(yīng)用uidcrc.exe,wine無(wú)法找到它(Shiroki@CuteQt有功于此)
解決方法: 將symbiansdk//epoc32/tools/uidcrc.exe拷貝.wine/drive_c/windows/system32目錄下
3.編譯的時(shí)候有兩個(gè)文件提示TDesC等symbian標(biāo)識(shí)符不認(rèn)識(shí)
解決方法:給src/gui/kernel/qsoftkeymanager_s60_p.h和src/gui/kernel/qkeymapper_s60.cpp文件頭部的地方,加入下面兩行
- #include <private/qcore_symbian_p.h>
- #include <private/qt_s60_p.h>
小結(jié):在Linux上開發(fā)Qt的內(nèi)容介紹完了,怎么感覺有點(diǎn)像智能手機(jī)越獄呢?呵呵,還是希望對(duì)你有幫助!