功率电感生产厂家
联系我们
热门搜索
点击排行
推荐阅读
猜猜你喜欢的
技术知识 您所在的位置: 首页 > 技术知识

使用BusyBox简化嵌入式Linux系统

来源:    作者:    发布时间:2015-11-01 06:17:37    浏览量:

到BusyBox的命令行链接也可以使用BusyBox在运行时动态创建。CONFIG_FEATURE_INSTALLER选项就可以启用这个特性,在运行时可以这样执行:

清单10。在运行时创建命令链接

$。/busybox--install-s

$

-s选项强制创建这些符号链接(否则就创建硬链接)。这个选项要求系统中存在/proc文件系统。

BusyBox编译选项

BusyBox包括了几个编译选项,可以帮助为我们编译和调试正确的BusyBox。

表1。为BusyBox提供的几个make选项

make目标说明

help显示make选项的完整列表

defconfig启用默认的(通用)配置

allnoconfig禁用所有的应用程序(空配置)

allyesconfig启用所有的应用程序(完整配置)

allbareconfig启用所有的应用程序,但是不包括子特性

config基于文本的配置工具

menuconfigN-curses(基于菜单的)配置工具

all编译BusyBox二进制文件和文档(。/docs)

busybox编译BusyBox二进制文件

clean清除源代码树

dis一体成型电感tclean彻底清除源代码树

sizes显示所启用的应用程序的文本/数据大小

在定义配置时,我们只需要输电感器厂家入make就可以真正编译BusyBox二进制文件。例如,要为所有的应用程序编译BusyBox,我们可以执行下面的命令:

清单11。编译B电感线圈usyBox二进制程序

$makeallyesconfig

$make

$

压缩BusyBox

如果您非常关心对BusyBox映像的压缩,就需要记住两件事情:

永远不要编译为静态二进制文件(这会将所有需要的库都包含到映像文件中)。相反,如果我们是编译为一个共享映像,那么它会使用其他应用程序使用的库(例如/lib/libc。so。X)。

共模电感器使用uClibc进行编译,这是一个对大小进行过优化的C库,它是为嵌入式系统开发的;而不要使用标准的glibc(GNUC库)来编译。

BusyBox命令中支持的选项

BusyBox中的命令并不支持所有可用选项,不过这些命令都包含了常用的选项。如果我们需要知道一个命令可以支持哪些选项,可以使用--help选项来调用这个命令,如清单12所示。

清单12。使用--help选项调用命令

$。/busyboxwc--help

Bus共模电感器yBoxv1。1。1(2006。04。09-15:27+0000)multi-callbinary

Usage:wc[OPTION]。。。[FILE]。。。

Printline,word,andbytecountsforeachFILE,andatotallineif

morethanoneFILEisspecified。WithnoFILE,readstandardinput。

Options:

-cprintthebytecounts

-lprintthenewlinecounts

-Lprintthelengthofthelongestline

-wprintthewordcounts

$

这些特定的数据只有在启用了CONFIG_FEATURE_VERBOSE_USAGE选项时才可以使用。如果没有这个选项,我们就无法获得这些详细数据,但是这样可以节省大约13KB的空间。

向BusyBox中添加新命令

向BusyBox添加一个新命令非常简单,这是因为它具有良好定义的体系结构。第一个步骤是为新命令的源代码选择一个位置。我们要根据命令的类型(网络,shell等)来选择位置,并与其他命令保持一致。这一点非常重要,因为这个新命令最终会在menuconfig的配置菜单中出现(在下面的例子中,是MiscellaneousUtilities菜单)。

对于这个例子来说,我将这个新命令称为newcmd,并将它放到了。/miscutils目录中。这个新命令的源代码如清单13所示。

清单13。集成到BusyBox中的新命令的源代码

#include"busybox。h"

intnewcmd_main(intargc,char*argv[])

{

inti;

printf("newcmdcalled:n");

for(i=0;i

printf("arg[%d]=%sn",i,argv[i]);

}

return0;

}

接下来,我们要将这个新命令的源代码添加到所选子目录中的Makefile。in中。在本例中,我更新了。/miscutils/Makefile。in文件。请按照字母顺序来添加新命令,以便维持与现有命令的一致性:

清单14。将命令添加到Makefile。in中

MISCUTILS-$(CONFIG_MT)+=mt。o

MISCUTILS-$(CONFIG_NEWCMD)+=newcmd。o

MISCUTILS-$(CONFIG_RUNLEVEL)+=runlevel。o

接下来再次更新。/miscutils目录中的配置文件,以便让新命令在配置过程中是可见的。这个文件名为Config。in,新命令是按照字母顺序添加的:

清单15。将命令添加到Config。in中

configCONFIG_NEWCMD

bool"newcmd"

defaultn

help

newcmdisanewtestcommand。

这个结构定义了一个新配置项(通过config关键字)以及一个配置选项(CONFIG_NEWCMD)。新命令可以启用,也可以禁用,因此我们对配置的菜单属性使用了bool(Boolean)值。这个命令默认是禁用的(n表示No),我们可以最后放上一个简短的Help描述。在源代码树的。/scripts/config/Kconfig-language。txt文件中,我们可以看到配置语法的完整文法。

  • 全天候监控首选 低照度摄像机全面解析标签:低照度 AGCON在 平安城市 项目、金融、文博、酒店、写字楼、住宅小区、平安村居、校园、港口、高速公路、街道等安防监控场合,对摄像机的性能要求越来越高,由于常规型摄像机难以满足24小时连续监控

  • ucos-ii应用在嵌入式智能视觉监控系统中1系统硬件平台设计 系统使用的主芯片是ADI公司Blackfin系列DSP中的BF533,这是一款专门面向视频应用的DSP,拥有丰富的外设接口和较好的系统扩展性。本系统利用BF533的PPI接口采集

  • 塑胶电晕机的故障塑胶电晕机的故障,主板保护,不能输出高压,主板上有IC:MC34066P、65826M、CD4049、MC14018、LM324N、CD4001、MC14018等;震荡对管是G30N60C3D这样的问题在论坛中很难帮上忙。你搞

  •