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
注:此文并没有完成在自定义目录下添加小程序
BusyBox 添加 自定义命令\小程序 (applet)的更多相关文章
- 自定义微信小程序导航(兼容各种手机)
		详细代码请见github,请点击地址,其中有原生小程序的实现,也有wepy版本的实现 了解小程序默认导航 如上图所示,微信导航分为两部分,第一个部分为statusBarHeight,刘海屏手机(iPh ... 
- 如何自定义微信小程序swiper轮播图面板指示点的样式
		https://www.cnblogs.com/myboogle/p/6278163.html 微信小程序的swiper组件是滑块视图容器,也就是说平常我们看到的轮播图就可以用它来做,不过这个组件有很 ... 
- 自定义微信小程序swiper轮播图面板指示点的样式
		微信小程序的swiper组件是滑块视图容器,也就是说平常我们看到的轮播图就可以用它来做,不过这个组件有很多样式是固定的,但是,有时候我们的设计稿的面板指示点是需要个性化的,那么如何去修改swiper组 ... 
- 实现自定义的小程序底部tabbar
		背景 诶,当然是为了实现更有温度的代码啦(背后设计师拿着刀对着我) 自带tabbar app.json中配置: tabBar: { backgroundColor: '#fff', borderSty ... 
- 支付宝小程序自定义弹窗插件|支付宝dialog插件|model插件
		支付宝小程序自定义弹窗组件wcPop|小程序自定义对话框|actionSheet弹窗模板 支付宝小程序官方提供的alert提示框.dialog对话框.model弹窗功能比较有限,有些都不能随意自定义修 ... 
- 微信小程序学习笔记四 自定义组件
		1. 自定义组件 类似Vue或react中的自定义组件 小程序允许我们使用自定义组件的方式来构建页面 1.1 创建自定义组件 类似于页面, 一个自定义组件由json wxml wxss js 4个文件 ... 
- 微信小程序学习指南
		作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ... 
- 微信小程序之生成图片分享
		通过社交软件分享的方式来进行营销小程序,是一个常用的运营途径.小程序本身支持直接将一个小程序的链接卡片分享至微信好友或微信群,然后别人就可以通过点击该卡片进入该小程序页面.但是小程序目前不支持直接分享 ... 
- mpvue + vant + flyio 小程序项目总结
		vant 的使用 我开始是 npm 导入,然后 import,使用不了. 找了各种方法,最后还是下载文件,然后找到 dist 文件夹,复制到项目里,我是放在 static 文件夹,文件名 dist 重 ... 
随机推荐
- python实现队列(queue)
			队列队列是一种先进先出的数据结构,主要操作包括入队,出队.入队的元素加入到对尾,从队头取出出队的元素.这里用列表简单模拟队列,其实现如下: queue()is_empty()size()enqueue ... 
- jqGird错误“decimalSeparator”的解决办法
			在使用jqGrid的过程中,突然出现以下错误: jquery.jqGrid.js:15016 Uncaught TypeError: Cannot read property 'decimalSepa ... 
- 【内容摘录自 MDN】变量作用域
			有如下自定义函数:(此函数为全局函数,任何地方均可调用) function output(value) { var para = document.createElement('p'); docume ... 
- Go安装gRPC
			grpc-go的官方安装命令 go get google.golang.org/grpc 无法正常使用. 我们可以用以下的命令替代,达到同样的效果 git clone https://github.c ... 
- scrapy中使用 IP 代理
			在 scrapy 中使用 ip 代理需要借助中间件的功能 首先在settings 中设置好中间件,中间件优先级数字越小越先被执行 , } 然后编写中间件,拦截请求设置代理 class ProxyMid ... 
- 全局注册Vue.directive
			1.src目录下新建directives文件 export default { install: function(Vue, option) { // 1:el指绑定的dom元素 // 2:bindi ... 
- npm安装包时的几种模式
			本文原文地址:https://www.limitcode.com/detail/59a15b1a69e95702e0780249.html 回顾 npm install 命令 最近在写Node程序的时 ... 
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:将所有列表项放置同一行
			<!DOCTYPE html> <html> <head> <title>菜鸟教程(runoob.com)</title> <meta ... 
- 51nod 1449:砝码称重
			1449 砝码称重 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 取消关注 现在有好多种砝码,他们的重量是 w0,w1 ... 
- java获取指定月份有几个星期x,获取指定月份跨了多少个星期
			例如获取2020年5月一共有多少个星期二,一共跨了多少个星期 public class MainTest { public static void main(String[] args) throws ... 
