一、什么是SBS(Scratchbox Build System)
SBS 是基于Scratchbox2 的一个Tizen开发构建系统。使用SBS,你可以在一个轻量级的命令行界面快速建立Tizen平台开发所需的一切。您可以下载源代码,并使用SBS构建它。 SBS还支持交叉调试环境和创建设备映像, SBS支持ARM和x86架构。
Scratchbox是构建、配置Linux软件和整个Linux发行版的编译环境。Scratchbox的基本思路是为开发者提供的开发环境看起来像目标环境一样。如用来在x86平台编译运行在arm平台上的Linux系统等。
在 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通常特定开发目标所需要的基本文件,不过有时候它的作用仅仅是引导。一般情况下,对嵌入式Linux开发环境,这个rootstrap一般包含在所提供的SDK中,如Tizen的SDK。
二、SBS安装
Tizen开发环境SBS的安装需要以下条件:
- Ubuntu (Debian) Linux system (10.04 or higher) 32-bit
- git-core
- Tizen SDK
1、安装依赖包
- $ sudo apt-get update
- $ sudo apt-get install dpkg-dev pkg-config uuid-dev cpp gcc gcc-multilib libarchive-dev liblzo2-devzlib1g-dev libxml2-dev automake autoconf realpath
2、安装SBS
首先需要从官网下载并安装
- $ git clone git://112.106.1.251/tools/sbs
- $ cd sbs
- $ ./install-sbs
安装完成之后,需要对目标环境初始化,假如我们的目标平台是 i386 ,则执行:
- ~/sbs-install/bin/sbs -A i386 -c
该过程需要一定时间。