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

創建源文件,如下


#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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM