使用SDK

SDK是一个可再定位的,预编译好的OpenWrt工具链,适用于在不从头开始编译整个系统的前提下,针对一个特定平台交叉编译单个用户空间包。

使用SDK的原因:

  • 为了保证二进制和特性兼容性,针对特定的发行版编译自定义软件
  • 编译更新版本的指定包文件
  • 使用自定义的补丁或者不同特性来重新编译已经存在的包

我们做了一个中文的说明: http://see.sl088.com/wiki/%E6%90%AD%E5%BB%BAOpenwrt_SDK

获得SDK

Download

You should find bz2-archives ready for download in the corresponding download directory:

Create one

configuration Choose you Target System and then

[x] Build the OpenWrt SDK

After the compilation, you will find in FIXME

Usage

By default the SDK ships with no package definitions. Makefiles for packages to compile must be checked out from the OpenWrt repository and placed into the package/ directory first.

Obtain Definitions

Use the svn export command to obtain package definitions. OpenWrt's Trunk package feed is located at svn://svn.openwrt.org/openwrt/packages, the Trac browser can be used to find the appropriate subdirectory.

The example below checks out the nano editor from the repository:

$ svn export svn://svn.openwrt.org/openwrt/packages/utils/nano package/nano A package/nano A package/nano/Makefile Exported revision 20365.

Many packages require additional dependencies which can be found in the package Makefile:

$ grep DEPENDS package/nano/Makefile DEPENDS:=+libncurses

If there are additional dependencies, those need to be fetched and compiled as well.

Compile Packages

After the Makefile is in place, the usual buildroot commands apply:

  • make package/example/download - download the soures of example
  • make package/example/prepare - extract the sources, apply patches and download if necessary
  • make package/example/compile - compile example, prepare and download if necessary
  • make package/example/clean - clean the sourcecode
  • make package/index - build a repository index to make the output directory usable as local opkg source

The common command to recompile a package example and enable verbose output is:

$ make package/example/{clean,compile} V=99

After the compilation is finished, the generated .ipk files are placed in the bin directory.

Example

The example below rebuilds nano.

$ svn export svn://svn.openwrt.org/openwrt/packages/utils/nano package/nano A package/nano A package/nano/Makefile Exported revision 20365. $ grep DEPENDS package/nano/Makefile DEPENDS:=+libncurses $ svn export svn://svn.openwrt.org/openwrt/trunk/package/ncurses package/ncurses A package/ncurses A package/ncurses/patches A package/ncurses/patches/100-ncurses-5.6-20080112-urxvt.patch A package/ncurses/patches/900-terminfo.patch A package/ncurses/patches/101-ncurses-5.6-20080628-kbs.patch A package/ncurses/patches/500-cross.patch A package/ncurses/Makefile Exported revision 20365. $ make package/ncurses/compile Collecting package info: done make[1] package/ncurses/compile make[2] -C package/ncurses compile $ make package/nano/compile make[1] package/nano/compile make[2] -C package/ncurses compile make[2] -C package/nano compile $ make package/index make[1] package/index $ ls bin/packages/mipsel/ libncurses_5.7-2_mipsel.ipk nano_2.2.3-1_mipsel.ipk Packages Packages.gz

Back to top

zh-cn/doc/howto/obtain.firmware.sdk.txt · Last modified: 2012/09/04 14:18 (external edit)