openwrt 编译相关
来源:互联网 发布:股民资源搜索软件 编辑:程序博客网 时间:2024/06/05 10:57
定制一个ipk
从helloworld开始在package目录放入helloworld目录,helloworld目录的结构如下
vmuser@vmuser-desktop:~/wtrb-env/openwrt-r32683/trunk$ find package/helloworld/package/helloworld/package/helloworld/srcpackage/helloworld/src/helloworld.cpackage/helloworld/src/Makefilepackage/helloworld/Makefile
总共3个文件,src目录下的两个文件Makefile,helloworld.c和外层的Makefile文件
helloworld.c
#include <stdio.h>#include <unistd.h>int main(void){printf("a hellowrold ipk for OpenWrt !!! \n");return 0;}Makefile,用于编译helloworld.c
#build a Makefile for helloworld.chelloworld: helloworld.o$(CC) $(LDFLAGS) helloworld.o -o helloworldhelloworld.o: helloworld.c$(CC) $(CFLAGS) -c helloworld.cclean:rm *.o helloworld
外面的Makefile 是openwrt定制的Makefile文件
################################################OpenWrt Makefile for helloworld program##############################################include $(TOPDIR)/rules.mk# Name and release number of this packagePKG_NAME:=helloworldPKG_RELEASE:=1.2# This specifies the directory where we're going to build the program.# The root build directory, $(BUILD_DIR), is by default the build_mipsel# directory in your OpenWrt SDK directoryPKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)include $(INCLUDE_DIR)/package.mk# Specify package information for this program.# The variables defined here should be self explanatory.# If you are running Kamikaze, delete the DESCRIPTION# variable below and uncomment the Kamikaze define# directive for the description belowdefine Package/helloworldSECTION:=utilsCATEGORY:=UtilitiesTITLE:=Helloworld -- prints a snarky messageendef# Uncomment portion below for Kamikaze and delete DESCRIPTION variable abovedefine Package/helloworld/description If you can't figure out what this program does, you're probably brain-dead and need immediate medical attention.endef# Specify what needs to be done to prepare for building the package.# In our case, we need to copy the source files to the build directory.# This is NOT the default. The default uses the PKG_SOURCE_URL and the# PKG_SOURCE which is not defined here to download the source from the web.# In order to just build a simple program that we have just written, it is# much easier to do it this way.define Build/Preparemkdir -p $(PKG_BUILD_DIR)$(CP) ./src/* $(PKG_BUILD_DIR)/endef# We do not need to define Build/Configure or Build/Compile directives# The defaults are appropriate for compiling a simple program such as this one# Specify where and how to install the program. Since we only have one file,# the helloworld executable, install it by copying it to the /bin directory on# the router. The $(1) variable represents the root directory on the router running# OpenWrt. The $(INSTALL_DIR) variable contains a command to prepare the install# directory if it does not already exist. Likewise $(INSTALL_BIN) contains the# command to copy the binary file from its current location (in our case the build# directory) to the install directory.define Package/helloworld/install$(INSTALL_DIR) $(1)/bin$(INSTALL_BIN) $(PKG_BUILD_DIR)/helloworld $(1)/bin/endef# This line executes the necessary commands to compile our program.# The above define directives specify all the information needed, but this# line calls BuildPackage which in turn actually uses this information to build a package.$(eval $(call BuildPackage,helloworld))
make menuconfig 里面选中
Utilities ---> <*> helloworld......................... Helloworld -- prints a snarky message
在根目录下执行
vmuser@vmuser-desktop:~/wtrb-env/openwrt-r32683/trunk$ make package/helloworld/compile make[1] package/helloworld/compile make[2] -C package/toolchain compile make[2] -C package/helloworld compile
会生成
bin/ar71xx/packages/helloworld_1.2_ar71xx.ipk
并把bin文件考到rootfs
staging_dir/target-mips_r2_uClibc-0.9.33.2/root-ar71xx/bin/helloworld
在源码根目录下执行make的时候,
make 的时候会把m选项的package,比如helloworld
拷贝到bin/ar71xx/packages/helloworld_1.2_ar71xx.ipk
拷贝到staging_dir/target-mips_r2_uClibc-0.9.33.2/root-ar71xx/bin/helloworld
不会拷贝到build_dir/target-mips_r2_uClibc-0.9.33.2/root-ar71xx/bin/helloworld
而y选项的package会拷贝在这3个目录下
定制一个内核模块
0 0
- openwrt 编译相关
- openwrt相关
- [OpenWrt] 如何编译OpenWrt
- [OpenWrt] 编译OpenWrt-Dreambox
- openwrt 编译
- openwrt编译
- 编译OpenWrt
- openwrt 编译
- OPENWRT编译
- OpenWRT 编译
- OPenWRT编译
- [OpenWrt] openwrt编译过程(luci)
- [OpenWrt] 新版OpenWrt编译教程
- [OpenWrt] openwrt编译过程(luci)
- [OpenWrt] openwrt编译过程(luci)
- openwrt ipk相关问题
- openwrt相关文档
- openwrt的相关帖子
- Unity3D研究院之提取游戏资源的三个工具支持Unity5(八十四)
- 桌面文件删除不掉的解决方案
- keystone WSGI流程
- 纪念
- 面试宝典之三 百度软研
- openwrt 编译相关
- Cocos2d-x笔记记忆整理Day4
- Activity does not have a parent activity name specified.
- FZU 1707
- php关于文件操作的部分函数
- spring Resolving views
- sizeof函数求数组长度
- <img>设置background有白色边框
- 一句话大数据产品介绍