15AH, San Francisco

California, United States.

Send Your Mail At:

tianyingkejishe@sina.cn

Working Hours

Mon-Sat: 9.30am To 7.00pm

分类标题

Autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et dolore feugait.

分类归档 Busybox

【busybox】Busybox增加功能软件

Busybox增加新功能软件需要遵循以下步骤:

  • 编译菜单中添加
  • 制作Applet的原型
  • 修改Makefile
  • 移植Applet
  • 调试Applet

一、编辑菜单

1、在Busybox源码根目录下创建「mtd-utils」目录

mkdir mtd-utils

2、创建「mtd-utils/Config.in」文件

touch mtd-utils/Config.src

3、在根目录下的「Config.in」文件中追加

source modutils/Config.in
source mtd-utils/Config.in  ←追加
source util-linux/Config.in

4、在「mtd-utils/Config.src」的文件内容如下所示

menu "MTD utils"

config MTD_DEBUG
    bool "mtd_debug"
    default n
    help
    Enable support mtd_debug

endmenu

5、查看UI界面配置

make menuconfig

二、制作Applet的原型

设计一个Applet原型,简单起见,只输出「hello」字符。大体需要下面3部:

  • 在Applet源文件中定义<Applet_name>_main函数
  • 在「include/applets.h」文件中添加<Applet_name>_main函数声明
  • 在「include/usage.h」文件中添加Applet帮助

1、创建「mtd-utils/mtd_debug.c」文件

#include "libbb.h"

int mtd_debug_main(int argc, char **argv) {
        printf("hello");
}

2、在「include/applets.src.h」文件中添加<Applet_name>_main函数声明

IF_MTD_DEBUG(APPLET(mtd_debug, BB_DIR_BIN, BB_SUID_DROP))

3、在「include/usage.src.h」文件中添加Applet帮助

#define mtd_debug_trivial_usage \
        "\n"
#define mtd_debug_full_usage "\n\n" \
        "\n"
#define mtd_example_usage \
        "\n"

4、创建「mtd-utils/Kbuild.src」文件

lib-$(CONFIG_MTD_DEBUG) += mtd_debug.o

INSERT

三、修改Makefile

libs-y:= \
                        archival/ \
(...)
                        modutils/ \
                        mtd-utils/ \  ←这里
(..)

四、配置编译项

make menuconfig后选择「mtd_debug」后编译。如果有以下输出则表示修改正确。

$ ./busybox mtd_debug
hello