OpenWrt学习笔记6 -- 开发package

    终于要开始写代码了,好激动。

    

    在一个典型的package目录下,你会看到三个东西:

  1. package/Makefile

  2. package/patches目录,可选

  3. package/files目录,可选

    patches目录顾名思义是用来放patch的。因为OpenWrt就像是一个repo仓库,有很多package来源于其他开源项目。而patches里面的patch就是用来修正bug,或者让其他开源项目能够顺利的编译、运行起来,又或者减小最终的可执行文件大小。

    files目录下则用来放默认配置文件或者init脚步等。

    Makefile当然是非常重要的了,决定了这个package需要如何下载、如何编译。

 

    既然只有Makefile是必须的,我们就从Makefile开始,build from scratch,一点点建起我们的罗马城。

    首先,在源码的package/utils/目录下建立一个dingding目录,新建Makefile,内容如下:

include $(TOPDIR)/rules.mk

PKG_NAME:=dingding
PKG_RELEASE:=1  #required

include $(INCLUDE_DIR)/package.mk

define Package/dingding
  SECTION:=utils
  CATEGORY:=Utilities
  TITLE:=Dingding says Hello
endef

define Package/dingding/description
  Dingding wanna learning OpenWrt
endef


$(eval $(call BuildPackage,dingding))

    然后在源码根目录运行make menuconfig,就会在Utilities下看到我们新建的dingding:

dingding in menuconfig

    选为"*",make一下,没报错,往下走。

    新建dingding.c,内容如下:

#include <stdio.h>

int main(int argc, char **argv) {
    printf("Hello This is dingding\n");
    return 0;
}

    再往Makefile加几行:

define Build/Prepare
	mkdir -p $(PKG_BUILD_DIR)
endef

define Build/Compile
	$(TARGET_CC) $(TARGET_CFLAGS) -o $(PKG_BUILD_DIR)/dingding dingding.c
endef 

define Package/dingding/install
	$(INSTALL_DIR) $(1)/usr/bin
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/dingding $(1)/usr/bin/dingding
endef

    make一下,在build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips/usr/bin 就可以看到我们的dingding了(??)

-rwxr-xr-x 1 ding ding 2295 Feb 17 00:10 build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips/usr/bin/dingding

    把固件升级上去,ssh登录上路由器,运行一下dingding:

    6不6?

 

参考资料:

  1. Creating packages

转载于:https://my.oschina.net/u/3258476/blog/840435

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值