您的位置:首页 > 运维架构

如何添加自己的应用到openwrt上

2017-10-26 09:44 369 查看
想在板子上加自己的程序,是通过编译.c文件打包成一个package,然后通过编译生成一个.ipk包,通过scp方式(例如WinSCP)上传到板上系统,再通过opkg install xxx来安装,安装完成标志就是输入前几个字符可以通过tab补全就算成功了。

cd package

mkdir XXX; 

mkdir src

touch src/Makefile   /* XXX.c 编译Makefile */

touch ./Makefile /*建立最上层Makefile,这个Makefile文件是OpenWRT读的*/
这两个Makefile是在不同文件夹的

XXX.c使用的Makefile

# build helloworld executable when user executes "make"  

CC = gcc

  

XXX: XXX.o  

        $(CC) $(LDFLAGS) XXX.o -o XXX  

  

XXX.o: XXX.c  

        $(CC) $(CFLAGS) -c XXX.c  

  

# remove object files and executable when user executes "make clean"  

clean:  

        rm *.o XXX  

给openwrt用的Makefile:

借用:http://blog.csdn.net/sevenjoin/article/details/50184859

贴一下
cat Makefile
#seven
include $(TOPDIR)/rules.mk          //像其他package一样添加规则
#include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:= zl380tw     //包的名字 可以随便取
PKG_RELEASE:=1               //自定义
PKG_VERSION:=1.0              //自定义

include $(INCLUDE_DIR)/package.mk     //读取package规则
#PKG_BUILD_DIR:= $(BUILD_DIR)/$(PKG_NAME)

define Package/zl380tw          //创建菜单条目
     SECTION:=utils                    //属于哪个类别,在此属于utils
     CATEGORY:=Utilities
     TITLE:=Microsemi r/w test     //在菜单显示标题
endef

define Package/zl380tw/description  //描述信息 自定义
     ZL380tw building test

endef

define Build/Prepare               //创建包编译位置
     mkdir -p $(PKG_BUILD_DIR)/src

     $(CP) ./src/* $(PKG_BUILD_DIR)/src/

     $(CP) ./include $(PKG_BUILD_DIR)/

     $(CP) ./lib $(PKG_BUILD_DIR)/

endef

define Build/Compile     //编译路径 此处会执行src/Makefile创建目标程序
     $(MAKE) -C $(PKG_BUILD_DIR)/src \

     $(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS) -I$(LINUX_DIR)/include"

endef

define Package/zl380tw/install     //此处对目标文件产出位置做安排,如果不想打包进fw,需要移除此项,然后通过 opkg install xxx.ipk安装
     $(INSTALL_DIR) $(1)/usr/bin

     $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tw $(1)/usr/bin

     $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tw_spi_access $(1)/usr/bin

     $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/raklink $(1)/usr/bin

endef

$(eval $(call BuildPackage,zl380tw))     

其中的很多选项可以注释掉,我只使用了很少的一部分

只要框架相同即可

写好Makefile后

回到最上层文件夹(我的makefile在/home/work/Openwrt/openwrt/package/sundb/src,需要回到/home/work/Openwrt/openwrt)下进行编译

回到这里后,用make menuconfig,在utils中选中(文件名我使用的是M,选*没有编译过)刚加的模块名,保存.config

然后执行make,生成ipk文件在/openwrt/bin/ramips/packages/base下找到XXX.ipk

通过(winscp)网线传输到板子/tmp上,通过opkg
install安装,再使用opkg list就可以看到了

以后的程序修改就可以通过这样的方式传输到板子上了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息