想在板子上加自己的程序,是通过编译.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
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
$(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
$(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
$(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
/sun
db
/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就可以看到了
以后的程序修改就可以通过这样的方式传输到板子上了