OpenWrt 是一个比较完善的嵌入式 Linux 开发平台,在 OpenWrt 中增加软件包极其方便,按照 OpenWrt 的约定就可以很简单的完成。软件包需要在 package 目录下创建一个目录,以包含该软件包的各种信息和与 OpenWrt 建立联系的文件。然后创建一个Makefile 与 OpenWrt 建立联系, Makefile 需要遵循 OpenWrt 的约定。下面就简单的说明一下具体的创建和测试过程。
一、源码编译使用模块,用户自定义安装,卸载
1、在package下新建文件夹,其名称一般为你要添加的软件包的名称,此处为测试特意使用别的名称,按 OpenWrt 的习惯,一般把自己设计的程序全部放在 src 目录下。所以,文件结构如下
2、编写src文件下的文件内容
1)、myabcd.c 内容如下
2)、Makefile内容如下
3、上级 Makefile的写法
OpenWrt 使用三个 Makefile 的子文件,分别为:
说明一、软件包的信息均以 PKG_开头,其意思和作用如下:
说明二、应用程序的编译包以 Package/ 开头,然后接着软件名称,在 Package 定义中的软件名称可以与软件包名称不一样,而且可以多个定义
说明三、在Makefile中,package定义的说明
本包安裝的配置文件,一行一个。如果文件结尾使用 / ,则表示为目录。用于备份配置文件说明,在 sysupgrade 命令执行时将会用到。
软件包的详细描述,取代 DESCRIPTION 详细描述。
编译准备方法,对于 上下载的软件包不需要再描述。对于非 上下载或自行开发的软件包必须说明编译准备方法。
在 Automake 中需要进行./configure,所以本配置方法主要针对需要配置的软件包而设计,一般自行开发的软件包可以不在这里说明。
编译方法,没有特别说明的可以不予以定义。如果不定义将使用默认的编译方法 Build/Compile/Default。
软件包的安装方法,包括一系列拷贝编译好的文件到指定位置。调用时会带一个参数,就是嵌入系統的镜像文件系统目录,因此 $(1) 表示嵌入系统的镜像目录。可以用户自定义目录,本例中使用的是app目录。
INSTALL_DIR、 INSTALL_BIN 在 $(TOPDIR)/rules.mk 文件定义,基本不要额外关注。其中:
意思是创建所属用戶可读写和执行,其他用戶可读可执行的目录。
意思编译好的文件存放到镜像文件目录。
完成前面定义后,必须使用 eval 函数实现各种定义。其格式为:
对于一般应用软件包
如果一个软件包有多个程序,例如:一个应用程序有自己的內核驱动模块,上面使用的PKG_NAME 需要灵活变通。 eval 函数可以设计多个。也可以当成多个软件包处理。
4、进行编译,首先进行 make menuconfig 进行选择
Songshuai Package –> Software Testing modules
安装完成后可以将 mycode_0.1-1_mipsel_24kc.ipk 删除了,然后进入到安装目录 app目录下
含义说明:
软件包安装前处理方法,使用脚本语言,调用时带入的参数为嵌入式系統的镜像目录。
软件包安装后处理方法,使用脚本语言。
软件包删除前处理方法,使用脚本语言。
软件包删除后处理方法,使用脚本语言。
二、编译源码,直接编译到内核中
进行 make menuconfig 进行选择 y 将其编译进固件。

此时需要进行整个openwrt的全编译,使用
进行编译,编译完成后,重新烧写内核文件即可,内核启动完成,可以直接在/app/目录下看到 mycode 可执行程序的文件。
三、不使用源码编译
此效果与上面的 二 的效果一样。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!