lzh电子论坛

欢迎来到lzh电子论坛:
如果您对电子技术感兴趣就加入我们吧!在这里互相交流互相学习!主要讨论的方向有:单片机,ARM,PCB板设计,FPGA,汇编,C/C++等方面。
-----lzh电子论坛
lzhbbs.top-me.com
lzh电子论坛

电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...

欢迎访问lzh电子论坛。可通过【谷歌,SOSO,搜狗】搜索“lzh电子论坛”直接进入论坛。点击了解论坛详细制度


    BusyBox——嵌入式Linux中的瑞士军刀

    分享
    avatar
    Admin
    管理员
    管理员

    帖子数 : 869
    威望 : 15
    注册日期 : 12-11-23
    年龄 : 25

    BusyBox——嵌入式Linux中的瑞士军刀

    帖子 由 Admin 于 2014-04-29, 3:45 pm

    BusyBox (
    http://www.busybox.net
    ) 将数以百计的常用Unix/Linux命令集成到一个可执行文件中(名为busybox).它体积小巧, 功能却不失强大. 常用Linux命令实现的功能它都能提供. 它甚至还提供了tftp, http服务程序. 尽管少数的Linux命令的某些选项BusyBox没能提供, 但这并不影响它在嵌入式Linux系统中的流行. 
    使用BusyBox, 在为目标系统所构建的根文件系统中添加应用程序就易如反掌了. 想象一下: 单独得交叉编译每个UNIX/Linux应用程序的工作量是多么恐怖.
    BusyBox 可以与glibc或uClibc库进行链接编译, 可以采用动态链接或静态链接(配置选项中可选). 即便采用与glibc的静态链接, 最终生成的busybox文件大小也能轻易控制在1MB之内(在配置BusyBox时不要选择不需要的功能).  而采用uClibc动态链接的可执行文件就更小了. 这非常适于存储空间紧张的嵌入式Linux系统. 由此, 有人将BusyBox称为嵌入式系统中的瑞士军刀. 更为形象的比喻是: Linux系统中的单个命令是电路中的分立式元件, 而BusyBox是将它们集成在一起的IC: 功能不变, 体积却大为减小.
    本文讨论BusyBox的编译, 安装. 包括安装到本地主机和安装到ARM目标系统中.
    配置BusyBox
    配置BusyBox和配置Linux内核的方法很类似, 思想也大同小异: 也是基于源码树目录中的.config文件来进行的. 还是推荐使用menuconfig配置工具.
    下面的工作都是在解压后的BusyBox源码树根目录中进行的.
    $ make defconfig       : 针对大多数用户的默认配置
    $ make allnoconfig    : 全不选
    $ make allyesconfig   : 全选
    一般先make deconfig, 然后再使用menuconfig进行配置.
    $ make help 查看BusyBox的make选项帮助.
    如同配置Linux内核, 你也可以使用既有的.config(可更改其命名)文件. 可以在menuconfig中加载, 输出配置文件.
    下面列出一些值得注意的配置选项:
    BusyBox Settings 
    Build Options:   
    Build BusyBox as a static binary (no shared libs) : 将BusyBox动态链接或静态连接.
    - Do you want to build BusyBox with a Cross Compiler? : 选择交叉编译器. 
    Installation Options:
    默认地, 运行 make install之后, BusyBox将被安装到./_install目录.
    配置根据具体需要来: 不需要的不选. 
    NFS是肯定要选的, 使用NFS将宿主机的文件系统mount到目标板上, 这是嵌入式Linux程序开发的一个重要方面. 
    由于可使用NFS, 能在宿主机上实现的功能就都不需要在目标板上实现了. 
    Debian Utilities 全不选, Editors全不选, System Logging Utilities全不选.  
    解压缩工具只安装解压工具. 而且只选择一种: bzip2相关的, 以及tar工具(只要求目标板能解压缩tar.bz2文件). 
    shell使用ash. 
    编译BusyBox
    完成对BusyBox的配置工作后, 就可以编译, 安装它了. BusyBox可用于多种体系结构的CPU. 这里分别介绍用于本机系统的BusyBox和用于ARM目标系统的BusyBox. 另外, BusyBox可与glibc或uClibc动态或静态连接. 下面分情况介绍:
    用于本机的BusyBox
    用于本机的BusyBox编译过程很简单, 只需运行make就可以了.
    交叉编译BusyBox
    交叉编译BusyBox与编译用于本地系统的BusyBox大同小异, 唯一的区别是它需要使用交叉编译工具. 另外要注意库的链接方式: 如果目标系统中没有某库, 那么BusyBox应该与该库静态链接.

      目前的日期/时间是2018-06-18, 12:07 pm