openwrt使用sdk编译应用程序
来源:互联网 发布:淘宝店铺体检中心 编辑:程序博客网 时间:2024/04/30 00:41
在openwrt源码目录下make menuconfig时,选择 [*] Build the OpenWrt SDK ,之后就会在bin/ar71xx/下生产SDK文件OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2.tar.bz2
解压之后就是OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2,此目录结构跟openwrt的目录结构基本一致
概述:源码在SDK/pakage目录,生成文件在SDK/bin/ar71xx/packages目录。如果没有SDK/bin/ar71xx/packages目录也可手动创建。SDK/bin/packages目录没用到。
1.在OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2/package目录下新建helloworld目录
2.在helloworld目录下新建Makefile文件和src目录
此Makefile内容
3.在src目录下新建helloworld.c文件和Makefile文件,分别如下
4.在OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2目录下执行编译
5.成功之后会在OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2/bin/ar71xx/packages/ 下生产helloworld_1_ar71xx.ipk
6.拷贝ipk到板子执行
会生成/bin/helloworld
通过opkg list可查看
解压之后就是OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2,此目录结构跟openwrt的目录结构基本一致
- song@song-virtual-machine:attitude_adjustment# ls bin/ar71xx/OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2
- bin Config.in docs include logs package Packages.gz rules.mk staging_dir tmp
- build_dir dl feeds.conf.default LICENSE Makefile Packages README.SDK scripts target
- song@song-virtual-machine:attitude_adjustment# ls
- bin build_dir dl feeds.conf.default LICENSE Makefile README scripts target toolchain
- BSDmakefile Config.in docs feeds include logs package rules.mk staging_dir tmp tools
概述:源码在SDK/pakage目录,生成文件在SDK/bin/ar71xx/packages目录。如果没有SDK/bin/ar71xx/packages目录也可手动创建。SDK/bin/packages目录没用到。
1.在OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2/package目录下新建helloworld目录
- song@song-virtual-machine:package$ ls
- helloworld Makefile rules.mk
2.在helloworld目录下新建Makefile文件和src目录
- song@song-virtual-machine:helloworld$ ls
- Makefile src
- ##############################################
- # OpenWrt Makefile for helloworld program
- #
- #
- # Most of the variables used here are defined in
- # the include directives below. We just need to
- # specify a basic description of the package,
- # where to build our program, where to find
- # the source files, and where to install the
- # compiled program on the router.
- #
- # Be very careful of spacing in this file.
- # Indents should be tabs, not spaces, and
- # there should be no trailing whitespace in
- # lines that are not commented.
- #
- ##############################################
- include $(TOPDIR)/rules.mk
- # Name and release number of this package
- PKG_NAME:=helloworld
- PKG_RELEASE:=1
- # 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 directory
- PKG_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 below
- define Package/helloworld
- SECTION:=utils
- CATEGORY:=Utilities
- TITLE:=Helloworld -- prints a snarky message
- endef
- # Uncomment portion below for Kamikaze and delete DESCRIPTION variable above
- define 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/Prepare
- mkdir -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))
3.在src目录下新建helloworld.c文件和Makefile文件,分别如下
- #include<stdio.h>
- int main(void)
- {
- printf("yyyy\n");
- return 0;
- }
- # build helloworld executable when user executes "make"
- helloworld: helloworld.o
- $(CC) $(LDFLAGS) helloworld.o -o helloworld
- helloworld.o: helloworld.c
- $(CC) $(CFLAGS) -c helloworld.c
- # remove object files and executable when user executes "make clean"
- clean:
- rm *.o helloworld
4.在OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2目录下执行编译
- song@song-virtual-machine:OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2$ make V=s
5.成功之后会在OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2/bin/ar71xx/packages/ 下生产helloworld_1_ar71xx.ipk
- song@song-virtual-machine:OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2$ ls bin/ar71xx/packages/
- helloworld_1_ar71xx.ipk Packages Packages.gz
6.拷贝ipk到板子执行
- opkg install helloworld_1_ar71xx.ipk
通过opkg list可查看
0 0
- openwrt使用sdk编译应用程序
- openwrt使用sdk编译应用程序
- openwrt使用sdk编译应用程序
- openwrt使用源码编译应用程序
- dpdk中文-使用openwrt-SDK编译DPDK
- OpenWrt SDK应用程序开发
- OpenWrt sdk编译问题
- 编译openwrt SDK错误
- 交叉编译OpenWRT应用程序
- openwrt添加自己的应用程序(SDK下编译模块)出现的问题
- OpenWrt-SDK-编译生成ipk软件包
- MT7688 Openwrt SDK 手动编译 madplay步骤
- openwrt交叉编译自己的应用程序(openwrt应用开发)
- Openwrt 交叉编译(Crosscompile)及使用SDK生成ipk安装包
- Openwrt 交叉编译(Crosscompile)及使用SDK生成ipk安装包
- Ubuntu 使用Openwrt SDK交叉编译ipk包过程全纪录(超多图)
- Ubuntu 使用Openwrt SDK交叉编译ipk包过程全纪录(超多图)
- openwrt交叉编译应用程序之helloworld
- Device Tree常用方法解析
- 如何向eclipse中导入ODE源码以及注意事项
- 第十一周项目1——二叉树算法验证(1) 层次遍历算法验证
- 配置nginx+lua开发环境笔记(2)
- 学习后总结,总结后再学习
- openwrt使用sdk编译应用程序
- Device Tree起源
- docker安装
- A a; A a(); A a(""); 没有严谨的态度,就做不好C++
- 代码瘦身方法
- Linux内核移植 part1:Exynos4412 sd卡启动uboot
- RHEL6.x查看网卡槽位对应设备文件及路径
- 解析URL的查询串中的name=value参数对
- POJ1125 Stockbroker Grapevine