使用OpenWrt的SDK

原文:http://wiki.openwrt.org/doc/howto/obtain.firmware.sdk

为什么要使用SDK:

 Reasons for using the SDK are:
Compile custom software for a specific release while ensuring binary and feature compatibility
Compile newer versions of certain packages
Recompile existing packages with custom patches or different features

如何获得OpenWrt的SDK,有两种方法:

  1. 在编译路由器固件的时候,选中[*] Build the OpenWrt SDK;

  2. http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/这里去下载,如果你使用不同的OpenWrt版本或者不一样的路由器,请自行选择,入口地址http://downloads.openwrt.org/

-----------------------------------

BTW, 看上面的图,这里ImageBuilder/SDK/Toolchain都分别作什么用途的呢?

  • ImageBuilder,现改名为Image
    Generator了。你想要获得的路由器固件有许多种途径获得(直接从官方下载编译好了的bin文件;你自己下载源码编译;使用ImageGenerator生成),这个工具的使用成本介于下载bin文件与源码编译两者之间。参考http://wiki.openwrt.org/doc/howto/obtain.firmware.generate看看它能做什么事情:


     Reasons for using Image Generator are:

    Embedding packages directly into the SquashFS to reduce space requirements on the target
    Preconfigure images by embedding packages and configuration files directly into SquashFS, and save manpower when flashing many devices
    Building minimal images. for example without the web interface
    Learning


  • SDK就上面有介绍了,The SDK is a relocatable,
    precompiled OpenWrt toolchain suitable to
    cross compile single userspace
    packages for a specific target without compiling the whole system from
    scratch.;看看SDK里机的内容就明白了,它是Toolchain+各种脚本组成的(Toolchain就在staing_dir里头):

  • Toolchain,工具链,像mips-openwrt-linux-uclibc-ld/mips-openwrt-linux-cpp这样子的东西,位于staging_dir/toolchain-mips~中;

-----------------------------------

默认情况下,下载得的SDK里面没有包含任何的包。你需要安装的包要到openwrt官方源中下载,可以使用svn或者git方式下载包(实际上是下载包的Makefile文件,这个Makefile文件中指定了某个网址,可以让SDK去下载真正的源码,后面我们会在例子中看到)。

不过可惜的是,我使用svn和git试过了许多源,都没有办法下载到任何包的Makefile文件,所以只能使用暴露一点的方法了:去TracBrowser下载,例如https://dev.openwrt.org/browser/packages/utils/nano下载nano编辑器的Makefile文件,将它们放到~/openwrt/package/nano/中。

然后我们在~/openwrt根目录下,执行下面命令就把源码下载下来了:

make package/nano/download

源码会下载到~/openwrt/dl中

然后输入prepare准备命令(解压源码到~/openwrt/build_dir/target-ips_r2~中,并执行打包patch文件,如果还有依赖没有下载的话也会自动下载,如nano需要ncurses库)

make package/nano/prepare

上图在编译过程中出现了许多WARNING

WARNING: skipping <package> -- package not selected
Run make menuconfig and enable compilation for your package. It should be labeled with <*> or <M> to work correctly. Read image.configuration further up in this article.

意思就是在make
menuconfig中没有选中这些包,所以它不编译!我是直接修改.config的,在里面搜索相应的WARNING指出的名字,然后改为=y就可以了。

输入编译命令(上图)

make package/nano/compile

结果已经在~/openwrt/bin/ar71xx中看到有这个ipk包了

使用OpenWrt的SDK

时间: 2024-10-10 23:58:47

使用OpenWrt的SDK的相关文章

开发OpenWrt路由器上LuCI的模块

[一.LuCI配置界面开发的框架] LuCI是OpenWrt上的Web管理界面,LuCI采用了MVC三层架构,同时其使用Lua脚本开发,所以开发LuCI的配置界面不需要编辑任何的Html代码,除非想自己单独去创建网页(View层),否则我们基本上只需要修改Model层就可以了.官方也有一个如何去创建模块的说明文档,虽然写的比较晦涩:http://luci.subsignal.org/trac/wiki/Documentation/ModulesHowTo 要为LuCI增加一个新模块,首先需要创建

openwrt 增加RTC(MCP7940 I2C总线)驱动详解

一.硬件平台 1.1 控制器:MT7620(A9内核) 1.2 RTC芯片:MCP7940(I2C总线) 二.软件平台 2.1.开发环境:Ubuntu12.04 2.2.软件版本:openwrt 官方15.05版本SDK开发包(CHAOS CALMER 15.05版本) 三.功能说明 本文章所选择的目标芯片为MT7620,profile 选择的为"Xiaomi MiWiFi Mini ". 3.1.在openwrt 系统上,移植mcp7940的rtc芯片驱动. 3.2.在openwrt

如何在Openwrt上,针对内核创建自定义Patch?

参考资料: 1.http://wiki.openwrt.org/doc/devel/patches?s[]=quilt   --- 官方对于如何打Patch的说明 2.http://blog.csdn.net/hbsong75/article/details/8825184  --- 使用quilt的小例子 众所周知,openwrt采用的是:从各个开源站点下载源码,解压缩,然后再打上N多Patch的方式,来搭建自己的编译环境的.其中,针对内核的编译,也是这么操作的. 那么,如何为内核创建自定义的

OpenWRT开发之——C++11的支持

前言 在上篇文章中博主尝试了在OpenWrt上用C++写个简单的程序测试了一下,可行. 博主这两天又了解了C++11,里面的新特性非常令我兴奋.比如shared_ptr, lambda, auto都是非常有用的特性.[点击了解C++11] 今天,博言主就尝试了一下. 正文 1. 检查gcc版本 据说,gcc在4.8版本之后就支持c++11了.我们先检查一下交叉编译器的版本. $ cd SDK    #进入OpenWrt的SDK路径 $ cd ./staging_dir/toolchain-mip

Package helloworld is missing dependencies for the following libraries: libc.so.6

这个是在我在Openwrt的SDK下编译模块的时候碰到的问题. 缺少类库,然后其实我发现我的类库在系统里是存在的: locate libc.so.6 结果: /lib/i386-linux-gnu/libc.so.6 /lib64/libc.so.6 看~ 明显存在,我用的应该是上面的那个类库,然后我弄了一晚上没弄好,今天所有工作做完终于弄好了.我做的工作包括这些: 第一步: 把/lib/i386-linux-gnu/libc.so.6这个文件拷贝到/home/user/attitude/sta

关于buildroot移植的思考

buildroot是一个成熟的SDK框架,基于它有了openwrt. 曾经有一个项目,需要将原有的OpenWrt SDK改造,并且将软件框架重新定义.尝试精简原来的OpenWrt,并且删除所有的软件包,留下rootfs.busybox这些基本的东西,但是还是有很多地方不如人意,难以修改(定制的过于深入).于是找到它的前身,buildroot,进行修改. 拿到buildroot后.发现和OpenWrt的一大区别就是耦合性低.在OpenWrt里面一些自动编译的操作,需要在buildroot里面手动编

openwrt sdk compile

recently ,bought a router : tl-wr741n-v5 hd my aim : let the router dail in neetkeeper environment : unbuntu linux 14.04 1  compile openwrt sudo apt-get update sudo apt-get install gcc sudo apt-get install g++ sudo apt-get install binutils sudo apt-g

2017-9-16-MTK OpenWRT SDK Analysise for UBNT ERX

2017-9-16-MTK OpenWRT SDK Analysise for UBNT ERX mtk openwrt Reference mtk sdk linux3.10 - mt7621 hw nat code ubnt erx patch mt7621 hw nat patch ubnt erx recover to edgeos Plan Plan A Porting Linux-3.10 HW Nat support to Linux-4.4 Plan B Porting ubnt

OpenWRT开发之——SDK

为了达到自己编写一个程序打包成ipk,并能在OpenWRT上运行的目的.我在网上找了些学习的资料. 本人参考的是:如何在OpenWRT上做开发 感谢该网友的耐心解答.虽然有现成的步骤,博主还是喜欢亲自实践一下,写下自己的实践过程. 第一步:生成SDK make menuconfig 选上 "Build the OpenWRT SDK" 在 trunk目录下,执行: $ make menuconfig 选择对应的"Target System"与"Target