Maemo SDK 軟體移植初步:以 SDLPAL 為範例
Maemo 是由 Nokia 所開發、基於 Linux 的行動作業系統,使用在 Nokia 770、 N800、N810 和 N900 上。儘管我們都知道 Nokia 已經放棄 Maemo 與後繼者 MeeGo 的開發,轉而投向 Windows Phone 的懷抱。但由於 Maemo 的軟體架構和桌面 Linux 系統有著高度相似性,所以它在應用軟體的發展上仍保有一定的生命力。
以下本文將說明如何使用 Maemo SDK 將軟體移植到 N900,使用的專案為 SDLPAL,也就是當年國產 RPG 經典《仙劍奇俠傳》(1995)使用 SDL 函式庫重製的版本。之所以選用 SDLPAL 作為範例,是因為它使用容易移植的程式語言(C、C++)和跨平台的函式庫(SDL)。
本文的 Maemo SDK 建置與設定流程和先前的 N900 編譯核心模組 一文是相同的,若已經參考過該篇文章,就可以直接略過本文在建置與設定上的說明,直接進入編譯與測試的部份。
1. 建置 Maemo SDK
Maemo SDK 是建置在 Linux 作業系統上,並且預設支援的發行版本是 Debian。因此 DR 建議直接下載已經包含 Maemo SDK 的 Ubuntu 映像檔,然後用虛擬機器(例如 VirtualBox)開啟、操作。這對於非 Debian 的 Linux 使用者來說會比較方便,省去許多設定上的麻煩。而對於非 Linux(Windows、Mac OS X)的使用者而言,虛擬機器應該是唯一的辦法。
2. 初步設定 SDK 環境
啟動虛擬機器後,登入系統,開啟終端機,執行:
- scratchbox
如此便進入 SDK 環境,預設的架構是 ARM(FREMANTLE_ARMEL),如果不是,執行以下指令切換:
- sb-conf se FREMANTLE_ARMEL
接著,設定幾個常用套件庫:
- vim /etc/apt/source.list
加入以下內容後儲存:
然後更新套件庫資訊即完成 SDK 的初步設定:
- fakeroot apt-get update
3. 編譯 SDLPAL
這步驟很單純,將 SDLPAL 的原始碼下載並解開後放到桌面的 sbhome 目錄裡,由於 SDK 本身已包含 SDL 函式庫,所以不需要再另外下載、安裝,因此直接在 scratchbox 下進入原始碼目錄然後執行編譯即可:
- scratchbox
- cd sdlpal
- make
事實上 DR 還有針對 N900 的操作環境做一些程式碼的改動,不過這不在本文的說明範圍之內。
4. 測試 SDLPAL
當軟體編譯好後,最全面的測試方式便是複製到 N900 上執行,不過也可以直接在電腦上進行有限度的測試,為什麼說是有限度呢?這是因為 SDK 所提供的測試方式其實是在電腦上先將軟體編譯成 x86 架構,然後在一個模擬的 N900 環境中執行軟體,由於硬體狀況不甚相近,所以只能說是有限度的。
在 SDK 環境的測試方式如下,同樣是在 scratchbox 下,先清除之前的連線:
- sb-conf killall --signal=9
然後將架構切換為 x86:
- sb-conf se FREMANTLE_X86
重新進行編譯:
- cd sdlpal
- make clean
- make
編譯完成後,另外開啟一個終端機,執行:
- Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac
這樣會開啟另一個 X server,等一下會用到。接著在原本的 scratchbox 下執行:
- af-sb-init.sh start
一個模擬的 N900 桌面就會出現在剛才開啟的 X server 上,最後在 scratchbox 下執行 SDLPAL(所需的遊戲檔案要先存放好),若沒有任何錯誤,SDLPAL 應該就會被順利執行:
- ./sdlpal
測試完畢後,記得要重編譯成 ARM 架構才能在 N900 上執行。
5. 其它參考資料:
- http://wiki.maemo.org/User:Jebba/SDK
- http://darkranger.no-ip.org/archives/v5/document/linux/pal_linux.htm