查看: 1016|回复: 0

[讨论] 跟我学OpenWrt 5-- 开发package

[复制链接]

39

主题

3

好友

4031

积分

QQ游客

  • TA的每日心情
    开心
    2014-1-27 10:34
  • 签到天数: 67 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2017-7-13 10:04:57 |显示全部楼层
        终于要开始写代码了,好激动。

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


    • package/Makefile

    • package/patches目录,可选

    • package/files目录,可选


         patches目录顾名思义是用来放patch的。因为OpenWrt就像是一个repo仓库,有很多package来源于其他开源项目。而patches里面的patch就是用来修正bug,或者让其他开源项目能够顺利的编译、运行起来,又或者减小最终的可执行文件大小。
         files目录下则用来放默认配置文件或者init脚步等。
         Makefile当然是非常重要的了,决定了这个package需要如何下载、如何编译。

         既然只有Makefile是必须的,我们就从Makefile开始,build from scratch,一点点建起我们的罗马城。
         首先,在源码的package/utils/目录下建立一个dingding目录,新建Makefile,内容如下:
    1. <font size="3">include $(TOPDIR)/rules.mk

    2. PKG_NAME:=dingding
    3. PKG_RELEASE:=1  #required

    4. include $(INCLUDE_DIR)/package.mk

    5. define Package/dingding
    6.   SECTION:=utils
    7.   CATEGORY:=Utilities
    8.   TITLE:=Dingding says Hello
    9. endef

    10. define Package/dingding/description
    11.   Dingding wanna learning OpenWrt
    12. endef


    13. $(eval $(call BuildPackage,dingding))</font>
    复制代码
    然后在源码根目录运行make menuconfig,就会在Utilities下看到我们新建的dingding:

        TIM截图20170713095925.png


        选为"*",make一下,没报错,往下走。
         新建dingding.c,内容如下:
    1. <font size="3">#include <stdio.h>

    2. int main(int argc, char **argv) {
    3.     printf("Hello This is dingding\n");
    4.     return 0;
    5. }</font>
    复制代码
    再往Makefile加几行:
    1. <font size="3">define Build/Prepare
    2.         mkdir -p $(PKG_BUILD_DIR)
    3. endef

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

    7. define Package/dingding/install
    8.         $(INSTALL_DIR) $(1)/usr/bin
    9.         $(INSTALL_BIN) $(PKG_BUILD_DIR)/dingding $(1)/usr/bin/dingding
    10. endef</font>
    复制代码
    make一下,在build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/root-ramips/usr/bin 就可以看到我们的dingding了(??)
    1. <font size="3">-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</font>
    复制代码
    把固件升级上去,ssh登录上路由器,运行一下dingding:

    TIM截图20170713100235.png


    就问你6不6?

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /4 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-9-21 18:38 , Processed in 0.190824 second(s), 12 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部