第二课--OpenWRT 应用开发入门
本节主要介绍如何在openwrt下进行开发,并将程序在microWRT上运行。 编译SDK搭建编译环境在openwrt固件编译的文档里有详解,我们要做的就是在它基础上编译出一个自己的OpenWrt开发环境。 1. 在源码的openwrt目录下,执行 $make menuconfig 会看到如下图形界面 选中 [*]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这个目录下做操作了。 2. 开发hello wrold的软件包 (1)进入package目录: $cd package (2)在package目录下创建helloworld目录,并进入helloworld目录: $mkdir helloworld $cd helloworld 如下图所示: (3)在helloworld目录下,创建新目录 src,并进入到src目录, 我们要在src目录下来写我们的hellowrold.c以及编译helloworld.c所需要的Makefile文件。 $mkdir src $cd src $touch helloworld.c $touch Makefile $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 如下图所示: makefile 文档 (5)下面就是编译了,回到SDK的顶层,也就是下面这个目录: $make V=s 编译过程会在build_dir目录下完成,生成的ipk包,在当前目录下的 bin/ramips/packages下的helloworld_1_ramips_24kec.ipk (6)pandorabox固件和 microWRT系统结构不一致,会导致此ipk包无法安装,为了解决这个问题, 我们可以将对应的二进制文件直接传到microWRT上运行,二进制文件在下面目录下: 将helloworld上传到WRTnode上 (7)在MicroWRT开发板上执行 执行 helloworld 查看程序的效果。 $./helloworld 出现打印信息:
|