这部分的内容:
  • 前言
  • 什么是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文件.

Maemo Linux手机平台系列分析:5 安装Maemo SDK相关推荐

  1. Maemo Linux手机平台系列分析:(16) Maemo应用开发: GTK+基础

    本部分内容: Glib基本概念 信号系统 GTK+术语 Hello world程序如何结束自己 Gobject接口 增加菜单和布局 Hildon 构件 使用附件 处理动态内存 避免使用废弃不用的函数 ...

  2. Maemo Linux手机平台系列分析:6 Maemo平台开发之D-Bus

    在Maemo平台中,D-Bus是一个非常重要的中间件(middleware)解决方案,主要用于进程之间的通信.已经有很多服务使用了D-Bus,接下来将介绍不同的方法去实现.D-Bus是贯穿于Maemo ...

  3. Maemo Linux手机平台系列分析:12 分析其Platform后,再回头整体看看Maemo

    Maemo 平台概述 为何开始maemo 平台开发? SDKs 和工具 文档和指南 maemo.org 诺基亚论坛maemo 开发伙伴服务 代表性终端 Maemo 平台概述 Maemo 是构建于桌面开 ...

  4. Maemo Linux手机平台分析系列:3 安装Maemo平台宿主Linux系统

    我们大多数单个主机都用的是Windows, 如果为了研究Maemo,还要把Windows的某个分区格式化,然后安装Linux,好像动静大了点.而且我们看文档一般习惯于在windows下面. 用vmwa ...

  5. Maemo Linux手机平台: 安装Maemo SDK

    这部分的内容: 前言 什么是Scratchbox? Scratchbox的组成 安装的前提条件 自动安装Scratchbox 自动安装Maemo SDK   前言 这部分主要介绍安装开发环境以及其先决 ...

  6. 7个Linux手机平台比较 (1):进程间通信的异同

    目前Linux手机平台不少,不管它目前强势还是弱势,我们先放一边: 我们来看看各个平台中所采用的技术点的相似点和不同点,比如分析一下 各个平台的进程通信机制的异同等等,后面会逐个分析. 目前几个Lin ...

  7. 7个Linux手机平台比较 (4):多媒体架构的异同

    目前Linux手机平台不少,不管它目前强势还是弱势,我们先放一边: 我们来看看各个平台中所采用的技术点的相似点和不同点,比如分析一下 各个平台的进程通信机制的异同等等,后面会逐个分析. 目前几个Lin ...

  8. 摩托罗拉等六厂商联手 开发通用Linux手机平台

    摩托罗拉等六厂商联手 开发通用Linux手机平台 关键词: 摩托罗拉等六厂商联手 开发通用Linux手机平台 本周四,手机厂商摩托罗拉.NEC .松下.三星,以及手机运营商NTT DoCoMo.沃达丰 ...

  9. Linux监控平台 zabbix介绍和安装

    2019独角兽企业重金招聘Python工程师标准>>> 12月24日任务 19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabb ...

最新文章

  1. LeetCode上最难的链表算法题,没有之一
  2. nginx、apach、php、mysql编译参数
  3. STL sort()函数详解
  4. bash ps1变量_在 Linux 中打扮你的冬季 Bash 提示符
  5. 精益数据分析 | 你孜孜追求的“增长”可能只是自嗨
  6. 照片处理和分享的思路
  7. 正方形个数(二维点哈希)
  8. 洛谷2296 寻找道路
  9. shell清空数据库表
  10. 有专门收C语言答案的软件吗,C语言二级考试题库APP
  11. 找不到msvcr100.dll怎么办?三种方法教你
  12. CE-植物大战僵尸关于“植物”的修改
  13. web前端开发培训学院,前端校招面试题及解析大全,值得收藏!
  14. crawlergo带cookie爬虫
  15. 【更新】MindFusion.WinForms Pack v2019.R1发布,改进Visio2013Exporter
  16. 面试官最常问的10道测试用例面试题及答案,每1题都很经典
  17. 看了 72 位图灵奖得主成就,才发现我对计算机一无所知
  18. 可乐吧 LayaBOX LayaAIR谢成鸿曾10年亏了1亿 如今做引擎创办Layabox融资1个亿
  19. 服务器全息显示修改,柔性全息显示器:通过拉伸就能切换显示信息
  20. java图标的含义_Eclipse中常见图标的含义

热门文章

  1. 最好的HTML 5编码教程和参考手册分享
  2. php导出cvs文件英文自动分割,导出csv_php导出csv文件函数
  3. 佳明本能 Instinct 2系列 评测
  4. “华为杯“ 武汉大学21级新生程序设计竞赛
  5. 黑马程序员——java的多线程
  6. matlab虚数的模,matlab计算带有复数的函数,最后求复数函数的模,结果里面却有...
  7. 阿里云服务器操作系统怎么选择?【参考指南】
  8. hover 鼠标悬浮改变样式
  9. GitHub Flavored Markdown 规范
  10. 中国电容器介质膜市场行业规模分析与十四五发展规划报告2022~2028年