使用Scratchbox来开发嵌入式Linux

scratchbox-core_1.0.13_i386.deb 立即下载

   在网上看到这篇文章,觉得很受用,虽然有点古老,但也能起到对scratchbox入门的作用,所以转载一下,

 

scratchbox介绍
Scratchbox is
a configuration and compilation environment for building Linux software and entire Linux distributions. The basic idea
of Scratchbox is to offer developers an environment that works and looks like the target environment before the target
environment is available.
安装,配置scratchbox
这里使用源代码来安装scratchbox, 使用Ubuntu/Debian的用户可以直接使用apt来安装. 具体可参考
Cross-Compiling tutorial with Scratchbox
和
Installing Scratchbox
ScratchBox组件
必选:
scratchbox-core : scratchbox环境, 常用工具及本地编译器.
scratchbox-libs   :  scratchbox-core, devkits和toolchains所需的库.
可选:
scratchbox-devkit-debian     : 用于Debian包开发的环境和工具.
scratchbox-devkit-doctools  : 文档生成工具
scratchbox-devkit-perl          : 额外的perl模块.
工具链(可选)
scratchbox-toolchain-arm-gcc3.3-glibc2.3
scratchbox-toolchain-i686-gcc3.3-glibc2.3
scratchbox-toolchain-arm-gcc3.2-uclibc20040229
scratchbox-toolchain-i386-gcc3.2-uclibc20040229
到 Scratchbox download
page 下载下面这些组件.
scratchbox-core-1.0.5-i386.tar.gz
scratchbox-libs-1.0.5-i386.tar.gz
scratchbox-toolchain-arm-gcc3.4-glibc2.3-1.0.2-i386.tar.gz
  
将这些包解压 $ tar xvzf  -C ~/project/sb
ScratchBox默认是要安装到/scratchbox目录的. 但如果你的根目录空间不够, 可以这样:(我把它安装到我的~/project/sb目录中)
$ sudo ln -s ~/project/sb/scratchbox /scratchbox
注意, 前面的包解压后都位于scratchbox目录中, 不需要自己建立scratchbox目录. 可以在全部解压缩工作结束后建立符号连接.
配置scratchbox
1, 运行 $ sudo /scratchbox/run_me_first.sh
会提示你一些问题:
Do you want to use sudo mode? [yes/no] (no): no
选为yes会存在一些权限问题.
Give the name of the scratchbox group (sbox): sbox
sbox是默认的组.
2, 选择这两项之后, scratch重启, 并提示你添加用户:
Now you should add one or more users with /home/zp/project/sb/scratchbox/sbin/sbox_adduser
$ sudo /scratchbox/sbin/sbox_adduser zp
注意, 被添加的用户只能是本地主机上已有的用户(这里是zp)!
3, 运行 $ groups 命令, 如果你看到有sbox这个组, 那么你就可以使用scratchbox了. 如果
没看到, 你需要注销, 再登录.
完成了上面的步骤之后, 运行 $ df -h ,看看是不是多了关于scratchbox的文件系统?
卸载scratchbox
由于scratchbox将本机系统的某些目录挂载(运行mount命令看看挂载信息), 所以不能直接通过删除目录来卸载scratchbox. 应该按下面的方法:
1, 停止scratchbox:
$ sudo /scratchbox/sbin/sbox_ctl stop
2,再使用mount命令确定没有目录被挂载到scratchbox后再删除目录:
$ rm -r /scratchbox
在你删除全部目录之前, 最好将scratchbox的usrs目录中有用的资料拷贝到别处备份.
使用scratchbox
使用scratchbox有两类方法:
(1)不登录到scratchbox中, 直接使用它提供的交叉编译工具. 这是我们常见的交叉编译开发手段.
(2)登录到scratchbox, 如果登录到任何一台linux主机, 在scratchbox中进行开发. scratchbox就是一个完备的开发环境.
这里分别介绍使用scratchbox的两类方法
outside scratchbox
安装上scratchbox之后, 在/scratchbox/compilers/中有这样一个目录:
arm-linux-gcc3.4.cs-glibc2.3
它正是我们安装的gcc-3.4 + glibc2.3的交叉编译工具.
在该下层目录bin中的即是交叉编译工具.
利用scratchbox提供的工具编译hello,world:
$ /scratchbox/compilers/arm-linux-gcc3.4.cs-glibc2.3/bin/arm-linux-gcc /
> -Wall -o hello hello.c
$ file hello
看看,它生成的hello可执行文件与使用别的交叉编译工具所生成的并无二致.
这样,我们就可把生成的hello拿到目标系统中运行.
在
Cross-Compiling tutorial with Scratchbox
中的2.2节介绍了相关内容.
如果嫌输入完整的命令比较麻烦, 可以更改环境变量PATH, 把相应的目录放到PATH的开头.

inside scratchbox
Scratchbox是一个chrooted的交叉编译环境.登录它之前,先要添加用户.
(这在安装,配置scratchbox的过程中已经完成了)
1, 登录到scratchbox
运行$ /scratchbox/login登录到scratchbox,出现这样的命令行提示符: [sbox-: ~] >
第一次登录到sb, 需要配置target, 先看看下一节!
在该提示符后, 可以输入常用的shell命令.
eg. 运行 ls /, 我们会看到一些熟悉的目录. 不要以为这就是你原来的Linux系统中的目录, 实际上, 这些目录中有些根本就是空的. scratchbox就是一个完备的环境. 与原来的linux没多大关系!
scratchbox将本地主机的一些目录挂载到scratchbox中. 运行$ mount可以看到哪些目录被挂载.
      
但在scratchbox中, 是看不到本地主机的home目录的. 如何解决呢? --可以在scratchbox中建立一些符号连接来共享本地主机的目录, 比如在~/project/sb中, $ ln -s /scratchbox/users/zp/home/zp/app/ app-sb
这样往~/project/sbscratchbox-/app-sb/目录中添加的内容都能在scratchbox用户zp的home目录中的app目录中看到.
在scratchbox中进行开发之前, 我们还有一些准备工作要做: 设置target.
2, 配置target
正如文章开头的scratchbox组件列表所述, 它提供了用于debian的开发环境和一些可选的glibc,
uClibc的开发链. 先前我们只使用了3个源码包,  现在再下载一些你觉得会有用的包, 解压到同一目录,
这样在配置target的过程中, 可以基于这些包配置不同的target: scratchbox可以配置不同的目标target用于开发.
在scratchbox中, 可以通过sb-menu图形配置工具来配置target, 也可以使用命令行sb-conf, sbrsh-conf来配置. 使用sb-menu比较方便. (sb-menu命令也可以用于选择另外一个target).
我现在针对手头的ARM9开发板来配置target.
arm9glibc: 使用glibc库; arm9uClibc: 使用uClibc库.
运行 > sb-menu 进入配置菜单.
关于建立target的详细配置步骤, 可参考
Installing Scratchbox
的第2.4节.
这里有一点要注意: 在 Selected devkits 中要选择cputransp配置模拟器. 选为qemu-arm.

QEMU
是一个ARM指令集仿真器. scratchbox中提供了qemu和sbrsh两种仿真手段. 要使用qemu仿真, 需安装devkit-cputransp包!
这里使用一个简单的例子来演示在scratchbox中进行交叉编译的方法
(1)打开一个terminal, 进入~/project/sb/app-sb 目录. 这就是我在前面建立的符号连接, 它指向zp用户在scratchbox中的/home/zp/app目录. 我在里面写个hello, world程序.
(2)打开另一个terminal, 登录到scratchbox. 在/home/zp/app目录, 能看到hello, world的源代码. 现在编译它:
$ gcc -Wall -o hello hello.c
这里的gcc调用的是scratchbox中对应该target选择的tool-chain. 还记得我们配置target时选择的吗?
$ file hello
hello: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped
$ ./hello
hello, world!
上面显示的结果实际上就是qemu模拟器上显示的结果.
怎么样? 在scratchbox中进行交叉开发是不是如同在本地主机上开发一样方便?
使用sbrsh进行开发
使用sbrsh应该算在上一节中"inside scratchbox"中的内容. 这里把它拿出来单独介绍.
Sbrsh is an alternative to QEMU for implementing the CPU-transparency feature of Scratchbox. It runs the configure
scripts' test programs on a remote device with the CPU architecture used by the cross-compilation toolchain-typically
the device that you are developing software for. Some build systems also benefit from it when they attempt to execute a
target binary which is used to generate data files. Running programs on an actual target device is more reliable than
emulating a specific device because emulators might not support all required features or there might not be an
appropriate emulator available at all.
设置NFS
使用sbrsh需要将用户的home目录和target目录对目标系统可见, 通过NFS挂载来实现.
我使用的Ubuntu, 先前已经安装好了NFS服务. 关于设置NFS, 具体可参考本blog的
这篇文章
要将home, target目录挂载到目标系统, 需修改/etc/exports配置文件. 将home和target对应的目录添加到其中:
/scratchbox/users//targets/(rw,all_squash,anonuid=,anongid=)
/scratchbox/users//home(rw,all_squash,anonuid=,anongid=)
我用这样的配置:
/scratchbox/users/zp/target/hh-glibc 192.168.2.120(rw,async,all_squash,anonuid=1000,anongid=1000)
/scratchbox/users/zp/home 192.168.2.120(rw,async,all_squash,anonuid=1000,anongid=1000)
all_squash : 将所有的UID和GID映射到他们各自的匿名版本上.
anonuid     :  指定远程UID被映射到的uid
anongid     :   指定远程uid帐号被映射到的gid
运行 $ id zp, 可以知道uid = 1000, gid = 1000. 将1000分配给anonuid和anongid.
目标系统mount后, 相当以用户zp的权限登录.
更改了/etc/exports, 运行 $ sudo exportfs -r 更新
      运行 $ sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务
安装sbrsh
接着要在主机上安装sbrsh dameon, 并在目标系统上运行它.

scratchbox-开源 Scratchbox是一个交叉编译工具包。 它提供了一种以简单,快速,安全和可预测的方式进行交叉编译的环境。 当前,重点是ARM体系结构,但可以轻松添加其他体系结构。 立即下载

相关推荐

scratchbox

scratchbox,非常好的工具,能执行arm脚本,编译x11很不错

Ubuntu 10.04搭建Scratchbox交叉编译环境

橄榄色:命令 红色:修改或新增内容 紫色:选择的选项 一、Scratchbox简介 Scratchbox is a configuration and compilation environment for building Linux software and entire Linux distributions. The basic idea of Scratchb

satiling的专栏 3192

scratchbox:测试用例和代码片段

暂存盒 测试用例和代码片段

构建scratchbox环境步骤

在Ubuntu9.04系统上构建scratchbox环境步骤:1.添加软件源到apt包管理器编辑/etc/apt/sources.list 最后面增加下面一行:deb http://scratchbox.org/debian/ stable main2.更新软件源sudo apt-get update3.安装软件包 sudo apt-get install

1228

应用Scratchbox构建嵌入式Linux系统.pdf

应用Scratchbox构建嵌入式Linux系统.pdf

[附源码]计算机毕业设计JAVA网上花店系统

附源码]计算机毕业设计JAVA网上花店系统项目运行环境配置:(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat。

ssm毕设程序设计 2442

scratchbox添加工具链的一篇文章

是转的。怕哪天原来的链接丢了,先备份一份,顺便加了点记录。/*-------------------------------*/sudo apt-get install darcssudo apt-get install dh-buildinfocd ........//拷贝工具链sudo cp arm-linux/ -raf /scratchbox/compilers/arm-linux-gcc

BathingMonkey的专栏 1859

告别爆显存!手把手教你为ComfyUI+华为Atlas 300I Duo配置wan2.1视频生成工作流(含CPU-VAE参数)

本文详细介绍了华为Atlas 300I Duo与ComfyUI的深度适配实战,重点优化wan2.1视频生成工作流。从硬件散热改造到软件栈配置,再到ComfyUI专项优化,提供完整的解决方案,显著提升视频生成效率与稳定性,特别适合需要高效文生视频的应用场景。

weixin_26812607的博客 456

几种Linux嵌入式开发环境的简单介绍

做Linux嵌入式系统的对常见的几种嵌入式开发环境一定不会默生,由于主要接触网络相关产品的一些系统设计,因此,将可能用到的嵌入式开发环境简要总结一下。主要涉及下面的几个东东: emDebian - http://emdebian.sourceforge.net uClinux - http://www.uclinux.org buildroot - http://buildr

shark16的专栏 712

ICG setup timing violation介绍?

门控时钟(clock gating)在RTL级电路设计过程中进行低功耗优化常用方法,能够有效降低动态功耗(翻转功耗)。Clock gating cell 可以由与门,与非门,或门或者或非门构成,但很容易产生Glitch。在实际使用中,一般用ICG(集成门控时钟单元)来完成clock gating。 下图展示了glitch的产生原因 在CTS时钟树综合的时候,ICG不会被看作sink,通常放置在source点附近,因此就会出现如上图这种结果。上图可以看出,在分析DFF到ICG的setup timing

m0_61003348的博客 9803

4D毫米波雷达与激光雷达融合评测:3种主流融合框架在极端天气下的性能对比

本文深度评测了4D毫米波雷达与激光雷达在极端天气下的三大融合框架性能,包括前融合、特征级融合和后融合。通过实测数据对比,揭示了多传感器融合在暴雨、浓雾等恶劣环境中的显著优势,为自动驾驶感知系统提供了关键的技术参考和工程实践指南。

weixin_28677005的博客 330

几种Linux下嵌入式开发环境的简单介绍

做Linux嵌入式系统的对常见的几种嵌入式开发环境一定不会陌生,由于主要接触网络相关产品的一些系统设计,因此,将可能用到的嵌入式开发环境简要总结一下。   做Linux嵌入式系统的对常见的几种嵌入式开发环境一定不会陌生,由于主要接触网络相关产品的一些系统设计,因此,将可能用到的嵌入式开发环境简要总结一下。主要涉及下面的几个东东: emDebian - http://emdebian.sour

yuyin86的专栏 895

12、认知地图的建模与学习

本博客系统介绍了认知地图的定义、背景及其在机器智能领域的应用,重点探讨了模糊认知地图(FCMs)的建模方法与优势。文章还对比分析了几种主流的认知地图模型(如Axelrod模型、Kosko模型等),并讨论了模型的稳定性条件及实际应用前景。通过智能制造和医疗诊断的具体案例,展示了认知地图在复杂因果推理中的强大能力,并提出了模型优化方向与未来研究展望。

plant的博客 208

应用Scratchbox构建基于CF卡的嵌入式Linux系统

石涛 师卫 (太原理工大学信息工程学院 山西省 太原市 030024)   摘要: 本文介绍了一种应用Scratchbox构建Linux操作系统的新方法,详细论述了应用Scratchbox和Busybox等开源软件在CF卡上构建一个嵌入式Linux操作系统的全过程。 关键词:Busybox; Scratchbox ;CF ;嵌入式Linux操作系统 中图法分类号:TP

1767

微信支付PHP集成指南

完整实现建议参考微信支付官方文档,包含更多支付场景(H5支付、Native支付等)和安全性处理细节。微信支付在PHP中的集成主要涉及服务端接口的调用和支付流程的实现。

bqq506615054的专栏 155

记录Android Studio连接华为(nova)手机鸿蒙系统踩过的坑

鸿蒙系统的华为老机子比较麻烦,坑有点多,兄弟们加油!

沉迷单车的追风少年 7920

Linux嵌入式开发环境的简单介绍

eCGUI-微型嵌入式GUI-图形界面系统(支持DOS 16/32bit,Linux,uC/OS等等)http://www.ecgui.com做Linux嵌入式系统的对常见的几种嵌入式开发环境一定不会默生,由于主要接触网络相关产品的一些系统设计,因此,将可能用到的嵌入式开发环境简要总结一下。主要涉及下面的几个东东:emDebian - http://emdebian.sourceforge.n

微型16/32位嵌入式GUI 738

Android实战——白天黑夜模式设置

白天黑夜模式是一种动态的UI模式,根据当前时间或用户设置的偏好,在白天和黑夜之间进行切换。它通过调整应用程序的颜色、亮度和其他可视化元素来提供更加舒适和易读的用户界面。

小旭的专栏 5225

scratchbox添加工具链

scratchbox是一个嵌入式linux开发工具,好像可以用来编tinyx,先收藏着吧!   /*-------------------------------*/ sudo apt-get install darcs sudo apt-get install dh-buildinfo cd ........ //拷贝工具链 sudo cp arm-linux/ -raf

仰望星空的专栏 1710

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: debian 系统备份
下一篇: Ubuntu远程桌面控制方法
Linux先生
博客等级 码龄20年 97粉丝 43原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值