第二课--OpenWRT 应用开发入门

来自Microduino Wikipedia
Shengkai81@gmail.com讨论 | 贡献2014年10月27日 (一) 13:29的版本 (Created page with "{| style="width: 800px;" |- | 本节主要介绍如何在openwrt下进行开发,并将程序在microWRT上运行。 ==编译SDK== 搭建编译环境在openwrt固件编译...")
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

本节主要介绍如何在openwrt下进行开发,并将程序在microWRT上运行。

编译SDK

搭建编译环境在openwrt固件编译的文档里有详解,我们要做的就是在它基础上编译出一个自己的OpenWrt开发环境。

1. 在源码的openwrt目录下,执行

$make menuconfig

会看到如下图形界面

文件:Backup.jpg
Upgrade Window

选中 [*]Build the OpenWrt SDK,保存退出, 然后用下面程序进行编译。

$make V=s

2. 编译完成以后,在openwrt/bin/ramips我们会看到 OpenWrt-SDK-ramips-for-linux-i686-gcc-4.8-linaro_uClibc-0.9.33.2.tgz.bz2压缩包 (依照你的虚拟机不同而不同)。这个就是我们编译好的OpenWRT SDK环境。 我们将在它下面来做OpenWrt软件包的开发。 下面来解析一下我们的SDK环境的含义, 可以从名称上看出,target system是ramips,host system是Linux-i686, 使用的编译工具以及库是 gcc-4.8-linaro_uClibc-0.9.33.2

开发程序

1. 解压,并进入SDK

$tar -jxvf OpenWrt-SDK-ramips-for-linux-i686-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2
$cd OpenWrt-SDK-ramips-for-linux-i686-gcc-4.8-linaro_uClibc-0.9.33.2
$ls

看到如下界面,我们接下来就要在package这个目录下做操作了。

文件:Backup.jpg
Upgrade Window

2. 开发hello wrold的软件包 (1)进入package目录:

$cd package

(2)在package目录下创建helloworld目录,并进入helloworld目录: $mkdir helloworld $cd helloworld 如下图所示:

文件:Backup.jpg
Upgrade Window

(3)在helloworld目录下,创建新目录 src,并进入到src目录, 我们要在src目录下来写我们的hellowrold.c以及编译helloworld.c所需要的Makefile文件。

$mkdir src
$cd src
$touch helloworld.c
$touch Makefile
文件:Backup.jpg
Upgrade Window
$vim helloworld.c
#include <stdio.h>
#include <unistd.h>
int main(void)
{
   printf("Welcome to microWRT, have a fun !!! \n");
   return 0;
}
$vim Makefile
#build a Makefile for hellowrold.c
helloworld: helloworld.o
   $(CC) $(LDFLAGS) helloworld.o -o helloworld
helloworld.o: helloworld.c
   $(CC) $(CFLAGS) -c helloworld.c
clean:
   rm *.o helloworld

(4)编写Makefile,这个Makefile文件是给OpenWRT读的。是用来生成软件包的, 在上一步中我们写的Makefile是为了编译helloworld.c的,两个Makefile不同, 也不在同一层目录下。在上一步中我们是在src目录下,现在我们要编写的Makefile要在上层目录, 既是helloworld目录下 $cd ../ $touch Makefile 如下图所示:

文件:Backup.jpg
Upgrade Window

makefile 文档

(5)下面就是编译了,回到SDK的顶层,也就是下面这个目录:

文件:Backup.jpg
Upgrade Window
$make V=s

编译过程会在build_dir目录下完成,生成的ipk包,在当前目录下的 bin/ramips/packages下的helloworld_1_ramips_24kec.ipk

(6)pandorabox固件和 microWRT系统结构不一致,会导致此ipk包无法安装,为了解决这个问题, 我们可以将对应的二进制文件直接传到microWRT上运行,二进制文件在下面目录下:

文件:Backup.jpg
Upgrade Window

将helloworld上传到WRTnode上

文件:Backup.jpg
Upgrade Window

(7)在WRTnode开发板上执行 执行 helloworld 查看程序的效果。

$./helloworld

出现打印信息:

文件:Backup.jpg
Upgrade Window