• BusyBox 添加 自定义命令小程序 (applet)


    背景

    在做嵌入式开的时候,busybox无疑是非常好用的命令集,所以很多时候都喜欢把busybox移植到我们的系统里面。

    说明

    添加一个很简单的命令——hello_busybox,输出“Hello Husybox!”。
    busybox解压出来有很多目录,每个目录几乎是一类命令,比如网络,shell等等。
    为了方便举例,我们把hello_busybox这个命令添加到miscutils目录下。

    步骤

    1)、在miscutils目录下添加.c文件,函数名要与其它.c文件里面的函数名的格式保持一致,即命令名_main()。

    vi miscutils/hello_busybox.c
    

    使用以下内容

    //#include "busybox.h"  
    #include "libbb.h"  
    
    int hello_busybox_main(int argc, char *argv[])
    {
        printf("hello_busybox_main!
    ");
    
        return 0;
    }
    
    

    2)、修改源文件所在目录下的配置

    vi miscutils/Config.src
    

    新增以下内容

    config HELLO_BUSYBOX
            bool "say hello to busybox"
            default y
            select PLATFORM_LINUX
            help
                    say hello to busybox
    

    修改这里主要是使得执行“make menuconfig”命令的时候,配置界面可以出现我们新增的命令,让用户对该命令可以配置。
    第一行是表示该命令的一个环境变量;第二行是出现在配置界面上的文字,是一个布尔量,取值为“Y”或者“N”;第三行是这个选项的默认值,这里默认是选中,后面两行是在配置界面的帮助信息。

    注:修改上面的文件只是让配置界面出现我们的这个命令,以及根据是否选择配置环境变量“HELLO_BUSYBOX”为“Y"或”N",到目前为止,busybox还是不能编译到我们的源文件,甚至到现在为止都还不知道我们的这个源文件叫啥。

    3)、修改编译源文件所在目录的Kbuild.src

    vi miscutils/Kbuild.src 
    

    在INSERT之后新增一行

    lib-$(CONFIG_HELLO_BUSYBOX)    += hello_busybox.o
    

    4)、修改include/applets.src.h文件

    vi include/applets.src.h
    

    新增一行

    IF_HELLO_BUSYBOX(APPLET(hello_busybox, BB_DIR_SBIN, BB_SUID_DROP))
    
    #第一个参数:命令的名字;第二个参数:存放的路径:第三个参数:权限
    

    5)、为命令添加帮助信息,以便使用--help的时候查阅

    vi include/usage.src.h
    

    新增下面内容

    #define hello_busybox_trivial_usage 
        "None"
    
    #define hello_busybox_full_usage "None"
    
    // 多行注意需要用"" 隔开
    

    使用make menuconfig即可看到,还有在make之前可以查看到include/autoconf.h里面有:

    #define CONFIG_HELLO_BUSYBOX 1                                                                                                  
    #define ENABLE_HELLO_BUSYBOX 1
    

    make 之后在include/config/下生成/hello/busybox.h文件:

    #define CONFIG_HELLO_BUSYBOX 1
    

    测试

    本机也可以进行测试(编译成本机能够执行的语言即可)

    ./busybox | grep hello_busybox
    

    或者

    ln -s busybox hello_busybox && ./hello_busybox
    

    注:此文并没有完成在自定义目录下添加小程序

  • 相关阅读:
    [公告]博客园新服务器已下订单
    清除SearchNet.exe
    [新闻]微软将在2007年发布的Office产品阵容
    卸载Internet Explorer 7 Beta 2 Preview引起原来的IE无法正常使用
    博客园准备购买新服务器
    [微软活动公告]微软最有价值专家(MVP)四月份在线申请开始了
    [公告]今晚数据库迁移至新服务器
    请wz不要把别人的文章当作自己的文章发表
    SQL Server 2000 To SQL Server 2005
    [公告]博客园数据库已成功迁移至新服务器
  • 原文地址:https://www.cnblogs.com/schips/p/12125736.html
Copyright © 2020-2023  润新知