您的位置:首页 > 运维架构 > Linux

Maemo Linux手机平台: 安装Maemo SDK

2008-10-19 23:18 555 查看
这部分的内容:

前言

什么是Scratchbox?

Scratchbox的组成

安装的前提条件

自动安装Scratchbox

自动安装Maemo SDK

前言
这部分主要介绍安装开发环境以及其先决条件。Maemo SDK含有开发应用的库和工具。这个SDK必须安装在一个称作Scratchbox的开发环境中,这样才能使用。
我们首先开始安装Scratchbox, 之后在Scratchbox里面安装Maemo SDK。
安装Scratchbox和SDK有手动和自动之分,手动就是执行Nokia公司写好的一个脚本,自动把原本需要手动一个个安装的过程集合在一块了,这种方式成功率比较高,毕竟是验证过多次了。我们这里也采用这种自动安装的方式,确保环境搭建完成后,能用。

什么是Scratchbox呢?
之前你可能已经看到了Internet Tablet上面跑的应用程序了,也许你会问:如何写自己的程序。如果你之前使用过不同的GNU工具,也许你想知道这些工具和库在开发过程中是如何工作的?
在Scratchbox里面, 有个非常特殊的东西:sandbox(沙盒), 就是这个东西提供一些必要的工具,同时把你的开发同外面真实的Linux 系统隔离开来。Scratchbox的另外一个用处是:交叉编译,你可以在Scratchbox里面编译出能直接运行在target设备上的二进制文件。
Scratchbox这个名字来源于: “Linux from scratch” + “chroot jail”, 投入监狱(一个盒子内)。这可以告诉我们一些信息:当我们工作于Scratchbox里面时,你所运行的程序是在一个改变了根目录的环境下运行的。在Linux系统中,改变一个进程所能看见的路径是可以做到的。Scratchbox正是利用了这一点,在启动时,就把它的根目录切换到其他目录了,而不再指向它的真实根目录了。这也是隔离技术所使用的部分伎俩。正因为此,这个新的环境就叫做沙盒了,你在这个隔离的盒子里玩些危险的东西也不会对真实的环境造成危害。隔离技术还使用了另外一个技术:转移(通过使用LD_PRELOAD, 由LD_PRELOAD指定的共享库优于其他共享库加载)

Scratchbox由哪些特性呢?

它是sandbox的具体实现软件包,sandbox的主要目的就是为了隔离

含有容易使用的交叉编译工具

支持多个开发者使用同一个开发环境

支持为每个开发人员单独配置

能运行原本运行在硬件上的目标程序,通过一个机制:sbrsh实现

能过在host上运行非本地的二进制代码,通过使用Qemu

在上面这些主要的features中,能利用来开发程序的包已经安装在Scratchbox环境中了,Scratchbox同时也集成了Debian包管理,因此,你可以在Scratchbox里面为不同的目标发布软件包(类似于windows的 .msi文件,Fedora的 .rpm文件)。通过使用标准的Debian包管理工具,你可以通过internet直接安装你需要的一些开发包。
Internet Tablet产品也使用了类似的包管理,这就意味着使用Scratchbox编译的包可以直接安装到实际的设备中。
Scratchbox 组件:
在开始安装Scratchbox之前,我们先了解一些Scratchbox中使用的一些术语,并且从现在开始,我们把Scratchbox简称为sbox.

core package:核心包,这个包中含有实现sbox的核心工具

libs package:库文件包,这个包含有core包运行所需要的库文件

devkit:开发工具包,含所有sbox所需要的附加工具,我们主要关心4个devkits. 后面会再介绍。

toolchain:工具链,像编译器,连接器等等。

target:目标,这里指我们当前使用的工具链和配置。一个目标使用特定的工具链,并且具有一个文件系统。你可以有不同的目标,甚至于这些目标使用相同的工具链。这就很方便于测试不同的目标。注意:sbox目标并不能等同于实际的物理设备。

rootstrap: rootstrap是目标根文件系统,用于满足基本的开发。Rootstraps通常特定开发目标所需要的基本文件,不过有时候它的作用仅仅是引导。对于Maemo来讲,当然也有rootstrap, 我们把叫做“Maemo SDK”。

安装的前提条件:
在安装之前,你可以先看看安装指令,大致有个概念就行。
另外还有个需要检查:binfmt, 这个可以支持在sbox中运行一些指令。
Step 1: 检查binfmt, 如果没有加载,手动加载

root@test-desktop:/home/workspace# lsmod | grep binfmt
root@test-desktop:/home/workspace#
root@test-desktop:/home/workspace# modprobe binfmt_misc
root@test-desktop:/home/workspace# lsmod | grep binfmt
binfmt_misc 12936 0
root@test-desktop:/home/workspace#

Step 2: 安装一个X Server
第二步就是安装一个X Server, 它可以俄当作一个X client连接到你的实际系统中,这是非常必要的,对于运行你的程序。
X Server目前有3个选择:

Using Xephyr, a Kdrive based X server/client that can emulate 16-color depth for its clients even if it's acting as a client to an 24-bit depth real X server. It also implements modern X protocol extensions. This material will only cover Xephyr.

Using Xnest, which is an older version of the subject. Requires your real X server to be at the same depth that it is simulating to its clients.

Using Xvnc which is an X server that can be connected to using a VNC client. Using Xvnc is not covered here, but its use should be very close to using Xnest.

命令:

root@test-desktop:/home/workspace# apt-get install xserver-xephyr
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
xserver-xephyr
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 1587kB of archives.
After unpacking 3977kB of additional disk space will be used.
Get:1 http://security.ubuntu.com gutsy-security/main xserver-xephyr 2:1.3.0.0.dfsg-12ubuntu8.3 [1587kB]
Fetched 1587kB in 56s (27.9kB/s)
Selecting previously deselected package xserver-xephyr.
(Reading database ... 88958 files and directories currently installed.)
Unpacking xserver-xephyr (from .../xserver-xephyr_2%3a1.3.0.0.dfsg-12ubuntu8.3_i386.deb) ...
Setting up xserver-xephyr (2:1.3.0.0.dfsg-12ubuntu8.3) ...
root@test-desktop:/home/workspace#

验证一下:

root@test-desktop:/home/workspace# dpkg -l | grep xephyr
ii xserver-xephyr 2:1.3.0.0.dfsg-12ubuntu8.3 Next Generation Nested X Server
root@test-desktop:/home/workspace#

Step3:自动安装Scratchbox:

安装Scratchbox一个比较好的方法是使用自动安装脚本,首先从其网站下载脚本:http://tablets-dev.nokia.com/4.0/maemo-scratchbox-install_4.0.sh

root@test-desktop:/home/workspace/maemo_sdk# sh ./maemo-scratchbox-install_4.0.sh -u test

-u 选项是指定scratchbox安装给谁用,我前面配置的用户名是test。
这个下载的时间比较长,耐心等待:
可能有几个小时!太长了,

Step 4:自动安装Maemo SDK:
下载安装脚本:http://tablets-dev.nokia.com/4.0/maemo-sdk-install_4.0.sh

root@test-desktop:/home/workspace# sh maemo-sdk-install_4.0.sh



[ 选择第3个安装,比较全. ]
安装完成后,就有两个targets:

CHINOOK_X86: 适用于开发软件和测试

CHINOOK_ARMEL: 适用于为目标版编译ARM image文件.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: