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!\n");

    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

注:此文並沒有完成在自定義目錄下添加小程序


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM