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了。
————————————————
版权声明:本文为CSDN博主「斷點1」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a_tu_/article/details/51509474