在Linux上開發Qt
本文介紹的是在Linux上開發Qt,對于這篇文章本人感覺很有成就感,因為你看完之后,有點像越獄。那么看看本文的講解吧。
對于諾基亞不提供在Linux環境下的Symbian SDK這件事情,我已經忍了很久了。現在它終于邁出了一小步。
Qt Labs終于在幾天前推出了如何在Linux開發Qt for Symbian應用的一篇博客,需要自己從源代碼編譯Qt for Symbian的版本。實話說,還不是很方便。如果你不著急用,還是靜待官方推出編譯好的安裝包吧,那時候跟編普通Qt for Linux應用沒什么區別了,執行qmake;make就能搞定。如果你和我一樣有編譯狂躁癥,或者build控,那么一起上路吧:),老外文章得貝得貝說一大通,感覺步驟很多似的,其實沒那么多。
預備條件:因為目前的Symbian SDK并非為Linux專用,而是直接借用了Windows版本的,所以為了保證SDK中的那些工具能夠在Linux下使用,你需要先把Wine(Linux下的windows 模擬器)裝上。
下載Symbian SDK
需要下載兩個安裝包,這里使用S60 5th版本,另外Qt需要open c & cpp的插件。下載地址分別為
GNUPOC工具下載
gnupoc有點陌生,也是在Linux上開發symbian應用的核心組件。可以將gnupoc拆開成gnu-poc來理解,就是gnu下的epoc環境。利用該工具可以將我們從windows下下載的symbian sdk安裝包解壓安裝到Linux環境中,GNUPOC下載地址為http://www.martin.st/symbian,選版本1.15即可。
Symbian SDK 安裝配置
將上面下載的GNUPOC解壓后,執行以下三條命令
- 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
下載一個Symbian SDK的補丁文件,然后利用下面命令打上補丁
- cd ~/symbiansdk
- gunzip symbiansdk-gcce.gz
- patch -p0 < symbiansdk-gcce
下載arm編譯器
沒有特別好說的,請下載arm-symbian編譯器,然后解壓
配置環境變量
將前面的安裝好的SDK以及編譯器中的一些工具,設置到個人用戶的.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源碼需要用到即將發布的Qt-4.7-beta版,我是直接使用http://qt.gitorious.org/qt/qt代碼倉庫里的版本,然后在QTDIR目錄下執行如下編譯命令
- $HOME/qt/configure -platform linux-g++ -xplatform symbian/linux-gcce -arch symbian -no-webkit -little-endian
- make
- cd src
- make sis
遇到的問題
1. configure時提示無法判斷littel-endian還是big-endian
解決辦法:在configure命令參數中加入-little-endian選項
2. 在調用rcomp生成symbian資源文件時提示”can’t write UIDs to s60main.rsc”
原因: 因為rcomp調用了另外一個應用uidcrc.exe,wine無法找到它(Shiroki@CuteQt有功于此)
解決方法: 將symbiansdk//epoc32/tools/uidcrc.exe拷貝.wine/drive_c/windows/system32目錄下
3.編譯的時候有兩個文件提示TDesC等symbian標識符不認識
解決方法:給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>
小結:在Linux上開發Qt的內容介紹完了,怎么感覺有點像智能手機越獄呢?呵呵,還是希望對你有幫助!