Maemo 是Linux的一个嵌入式发行版,支持ARM构架,其开发环境自然是桌面Linux了。由于Maemo使用了Debian包管理系统,所以最好还是在Debian或者Ubuntu上搭建开发环境了(目前支持X86和ARM两个构架)。为了简化开发,推荐使用Scratchbox 作为沙盒,该软件能够很好的虚拟Maemo环境以便于调试,并提供了很好的跨平台编译支持。如果你没有Linux环境,请从这里 下载Nokia提供的镜像,并在VMPlayer 上使用。
注意,Scratchbox需要内核提供binfmt_misc支持。该项通常被编译成模块,可使用命令lsmod | grep binfmt查看当前是否已加载此模块,或查看/proc/sys/fs/binfmt_misc/status文件判断是否支持该功能。此外,如果你是 AMD64(x86_64)的构架,还需要安装ia32-libs以提供对32位库的支持。 并且,Scratchbox和Linux内核的VDSO特性冲突,需要按照这里 的描述将其关闭。
现在开始安装。首先下载安装脚本并添加执行权限 :
wget -c http://repository.maemo.org/stable/5.0/maemo-scratchbox-install_5.0.sh http://repository.maemo.org/stable/5.0/maemo-sdk-install_5.0.sh
chmod a+x ./maemo-scratchbox-install_5.0.sh ./maemo-sdk-install_5.0.sh
然后安装Scratchbox 。如果是AMD64的系统,执行命令:
sudo ./maemo-scratchbox-install_5.0.sh -F -u $USER
如果是i386的系统,则执行命令:
sudo ./maemo-scratchbox-install_5.0.sh -u $USER
安装脚本会自动下载所需的安装程序,并进行安装。
接下来安装Maemo SDK :
newgrp sbox
./maemo-sdk-install_5.0.sh
接受协议和选择要安装的包后,脚本会自动下载所需的包并进行安装。安装完成后,就可以登录到Scratchbox环境中了:
/scratchbox/login
最后需要安装Nokia提供的私有二进制包 。首先接受这里 的EULA,然后将repository entry添加到Scratchbox环境的/etc/apt/sources.list文件中,执行以下命令进行安装:
sb-conf select FREMANTLE_ARMEL
vi /etc/apt/sources.list # add repository entry
apt-get update
fakeroot apt-get install nokia-binaries nokia-apps
sb-conf select FREMANTLE_X86
vi /etc/apt/sources.list # add repository entry
apt-get update
fakeroot apt-get install nokia-binaries nokia-apps
OK,现在就可以在Scratchbox中开发和测试了。
如果你希望删除开发环境 ,执行下面两条命令:
sudo apt-get remove scratchbox-* –purge
sudo rm -rf /scratchbox
下面安装Qt 4的开发环境。如果你希望安装Qt 4.5.3 ,则直接执行命令:
fakeroot apt-get install libqt4-dev
如果希望安装Qt 4.6 Preview ,则首先需要添加以下repository entry到Scratchbox环境的/etc/apt/sources.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-devel fremantle free non-free
deb-src http://repository.maemo.org/extras-devel fremantle free
然后再进行安装:
fakeroot apt-get install libqt4-maemo5-dev
最后将/opt/qt4-maemo5/bin添加到环境变量中即可。
最后的最后,测试 下安装的Qt环境。写一个简单的“Hello, Maemo”程序,然后用qmake编译。不过编译好的程序不能直接运行,需要在Scratchbox外运行Xephyr:
Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac -kb
然后在Scratchbox中设置程序的显示输出:
export DISPLAY=:2
接着在Xephyr窗口中虚拟一个Maemo桌面:
af-sb-init.sh start
OK,现在就可以在这个虚拟桌面中运行Qt程序了:
run-standalone.sh ./qtapps
好了,就这么多。如果有任何疑问和修正,请告知。