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

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

2016-05-26 18:27 344 查看
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


创建源文件,如下

#include <stdio.h>  

  

int main(void)  

{  

     printf("hello openwrt!!!\n");  

     return 0;  

}  

创建源文件的Makefile

SRC:=test.c  

test: $(SRC)  

    $(cc) $(SRC) -o test  

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

clean:  

    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了。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: