您的位置:首页 > 其它

向BusyBox中添加新命令(1.16.1版…

2018-02-23 17:10 162 查看
  纠结了几天的向BusyBox中添加新命令(1.16.1版本)终于有了进展了啊,网上不同版本的使用还真是不一样啊不一样!其实只要在相关文件中查看其他命令的写法就可以依葫芦画瓢了,害我忙活了这久。每次有问题都谷歌百度,但实质都差不多的,解决办法没有我遇到的问题,很沮丧。很开心~最终还是出结果了,很简单的程序很简单的方法哦~

  举例:新命令称为 newcmd,并将它放到了 ./miscutils 目录中

  首先,编写或改写新命令的源代码,保证命令对应main函数形如:

         int
cmdname_main( int argc, char **argv );

#include "libbb.h"

#include

int newcmd_main(int argc, char **argv)

{

  int i;

  printf("newcmd
called:\n");

  for(i = 0; i <
argc; i++)

  {

    printf("arg[%d]
\n", i);

  }

  return 0;

}

  然后,更新新添命令所在目录中的配置文件,这样配置时改命令才可见。BusyBox1.16.1版本中配置文件名为Config.in。

     本例中添加:

config NEWCMD 

bool "newcmd" 

default n 

help 

 newcmd is a new test command.

  再次,将命令添加到applets.h中,本例为:

IF_NEWCMD(APPLET(newcmd, _BB_DIR_USR_BIN, _BB_SUID_DROP))

这是因为本文件上面有定义宏# define APPLET(a,b,c) {#a,a##_main,b,c}。

  接着,向 usage.h 添加帮助信息,本例为:

#define newcmd_trivial_usage \

       "None" 

#define newcmd_full_usage \

       "None"

对应使用命令时显示为:

$ ./busybox newcmd --help BusyBox v1.1.1 (2006.04.12-13:47+0000)
multi-call   binary Usage:
newcmd None None

  最后,更改新添命令所在目录中的编译的Makefile,BusyBox1.16.1版本中名为Kbuild,本例中添加语句:lib-$(CONFIG_NEWCMD)
+=newcmd.o

这样添加新命令的过程全部完成,之后只要配置,编译,安装即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: