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

  纠结了几天的向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

这样添加新命令的过程全部完成,之后只要配置,编译,安装即可。

你可能感兴趣的:(嵌入式开发)