openwrt交叉编译自己的应用程序(openwrt应用开发)



openwrt 版本:15.05(cc)

OpenWrt上面应用程序开发有两种方式,一种是利用OpenWrt SDK,一种是利用OpenWrt源码。其实过程都差不是很多。源码会直接生成可执行程序的demo,SDK只生成ipk包,进行opkg安装。

在编译根目录下会有一个dl的目录,这个目录其实是“download”的简写,在编译前期,需要从网络下载的数据包都会放在这个目录下,这些软件包的一个特点就是,会自动安装在所编译的固件中,也就是我们make menuconfig的时候,为固件配置的一些软件包。如果我们需要更改这些源码包,只需要将更改好的源码包打包成相同的名字放在这个目录下,然后开始编译即可。编译时,会将软件包解压到build_dir目录下。

利用OpenWrt源码开发:

1、进入package目录,创建软件目录

#cd openwrt/package

#mkdir test

2、进入test目录,创建Makefile文件和代码路径


该Makefile基本内容格式都差不多,可参照以下进行修改

#
# Copyright (C) 2009-2010 Jo-Philipp Wich <xm@subsignal.org>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk


PKG_NAME:=test
PKG_RELEASE:=1

PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)

PKG_USE_MIPS16:=0


include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk

define Package/test
SECTION:=utils
CATEGORY:=Base system
TITLE:=Userspace  test
DEPENDS:=@TARGET_ar71xx 
endef

define Package/test/description
This package contains an utility to manipulate NVRAM on Broadcom based devices.
It works on bcm47xx (Linux 2.6) without using the kernel api.
endef

define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(CP) ./src/* $(PKG_BUILD_DIR)/
endef
define Build/Configure
endef

define Package/test/install
$(INSTALL_DIR) $(1)/$(PKG_BIN_DIR) #没有此句不会编译
endef

$(eval $(call BuildPackage,test))

注意以上凡是命令行,必须以tab开头,否则会出现Makefile:3: *** missing separator.  Stop.

#mkdir  src

3、进入src目录,创建相关源文件

#cd src

创建源文件,如下

  1. #include <stdio.h>  
  2.   
  3. int main(void)  
  4. {  
  5.      printf("hello openwrt!!!\n");  
  6.      return 0;  
  7. }  
创建源文件的Makefile


  1. SRC:=test.c  
  2. test: $(SRC)  
  3.     $(cc) $(SRC) -o test  
  4.     # remove object files and executable when user executes "make clean"  
  5. clean:  
  6.     rm *.o  
4、回到顶层目录

make menuconfig

Base system —>

   test

选中我们刚刚创建的test。保存退出

make package/test/compile V=99,编译test模块,观察编译过程可以发现交叉编译工具为CC="mips-openwrt-linux-uclibc-gcc"  

位置大概是staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/mips-openwrt-linux-uclibc/bin/ 编译成功后,

# ls build_dir/target-mips_34kc_uClibc-0.9.33.2/tes/
ipkg-ar71xx  Makefile  test  test.c  test.o

把test拷贝到开发板,执行就ok了。



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值