您的位置:首页 > 运维架构 > Linux

如何向busybox添加自己的命令 例如:tree

2016-12-28 17:00 1786 查看
make

make install

1;下载tree命令的源代码 http://mama.indstate.edu/users/ice/tree/,我使用的版本是busybox-1.17.2,可以去我的资源那里下载!!!,使用的tree版本为:tree-1.7.0.tgz,也可以到
我的资源那里下载,已经上传

在做嵌入式开的时候,busybox无疑是非常好用的命令集,所以很多时候都喜欢把busybox移植到我们的系统里面,移植过程网上也有很多相关的文档,今天这篇文档主要介绍如何在busybox中添加tree命令,过程如下:

busybox解压出来有很多目录,每个目录几乎是一类命令,比如网络,shell等等。我就把tree这个命令添加到miscutils目录下。

1)、在miscutils目录下添加.c文件,函数名要与其它.c文件里面的函数名的格式保持一致,即命令名tree_main(),刚下载下来的时候是main,修改为tree_main即可。

2)、修改编译文件,因为仅添加.c源文件,busybox编译系统不知道有新的代码添加进来,make的时候也不会编译tree.c文件,所以要修改Config.src文件(添加命令的整个过程跟添加内核驱动类似--内核是Kconfig):

config TREE

bool "tree"

default y

help

list the device map

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

3)、修改编译文件Kbuild.src,编译tree命令需要这个几个文件。

lib-$(CONFIG_TREE) += tree.o

lib-$(CONFIG_TREE) += unix.o

lib-$(CONFIG_TREE) += color.o

lib-$(CONFIG_TREE) += hash.o

lib-$(CONFIG_TREE) += html.o

lib-$(CONFIG_TREE) += json.o

lib-$(CONFIG_TREE) += xml.o

注:移植过busybox的人都知道在bin,sbin目录下生产的都是符号链接,我们自己的命令要最终当然也是符号链接,那么要把保存到哪个目录下呢?

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

vim applets.src.h

IF_TREE(APPLET(tree,_BB_DIR_BIN, _BB_SUID_DROP))

第一个参数:命令的名字;第二个参数:存放的路径:第三个参数:权限

5)、为命令添加帮助信息,以便使用--help的时候查阅,此处None可以随便修改

vim usage.src.h

22 #define tree_trivial_usage "None"

23 #define tree_full_usage "None

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

4751 #define CONFIG_TREE 1

4752 #define ENABLE_TREE 1

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

#define CONFIG_TREE 1

测试:

[root@Linux /home]# tree

.

|-- hello

| `-- hello_module.ko

|-- led

| |-- jaguar_led.ko

| |-- led_none

| `-- led_test

`-- spi

`-- spi_dev

3 directories, 5 files

完!!!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  busybox tree linux