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

 

加入以下內容後儲存:

 

deb http://repository.maemo.org/extras/ fremantle free non-free
deb-src http://repository.maemo.org/extras/ fremantle free
deb http://repository.maemo.org/extras-testing/ fremantle free non-free
deb-src http://repository.maemo.org/extras-testing/ fremantle free
deb http://repository.maemo.org/extras-devel/ fremantle free non-free
deb-src http://repository.maemo.org/extras-devel/ fremantle free

 

然後更新套件庫資訊即完成 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. 其它參考資料: