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
