OpenWRT编译 — 添加用户自定义app

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 的子文件,分别为:

由 这 些 Makefile 子 文 件 确 立 软 件 包 加 入 OpenWrt 的 方 式 和 方 法 。

说明一、软件包的信息均以 PKG_开头,其意思和作用如下:

说明二、应用程序的编译包以 Package/ 开头,然后接着软件名称,在 Package 定义中的软件名称可以与软件包名称不一样,而且可以多个定义

说明三、在Makefile中,package定义的说明
本包安裝的配置文件,一行一个。如果文件结尾使用 / ,则表示为目录。用于备份配置文件说明,在 sysupgrade 命令执行时将会用到。
软件包的详细描述,取代 DESCRIPTION 详细描述。
编译准备方法,对于网上下载的软件包不需要再描述。对于非网上下载或自行开发的软件包必须说明编译准备方法。
在 Automake 中需要进行./configure,所以本配置方法主要针对需要配置的软件包而设计,一般自行开发的软件包可以不在这里说明。
编译方法,没有特别说明的可以不予以定义。如果不定义将使用默认的编译方法 Build/Compile/Default
软件包的安装方法,包括一系列拷贝编译好的文件到指定位置。调用时会带一个参数,就是嵌入系統的镜像文件系统目录,因此 $(1) 表示嵌入系统的镜像目录。可以用户自定义目录,本例中使用的是app目录。

INSTALL_DIRINSTALL_BIN$(TOPDIR)/rules.mk 文件定义,基本不要额外关注。其中:
意思是创建所属用戶可读写和执行,其他用戶可读可执行的目录。
意思编译好的文件存放到镜像文件目录。

说明:
如果用戶空间的应用软件在 boot 时要自动运行, 则需要在安装方法说明中增加自动运行的脚本文件安装和配置文件安裝方法。详细说明可搭乘电梯直达查看

完成前面定义后,必须使用 eval 函数实现各种定义。其格式为:
对于一般应用软件包

如果一个软件包有多个程序,例如:一个应用程序有自己的內核驱动模块,上面使用的PKG_NAME 需要灵活变通。 eval 函数可以设计多个。也可以当成多个软件包处理。
4、进行编译,首先进行 make menuconfig 进行选择
Songshuai Package –> Software Testing modules

OpenWRT编译 -- 添加用户自定义app
或者也可以使用 来查找一下。
5、将编译完成后生成的ipk传到开发板上(如何传请自行解决 ^_^ ),进行下一步的安装和测试操作。

安装完成后可以将 mycode_0.1-1_mipsel_24kc.ipk 删除了,然后进入到安装目录 app目录下

OpenWRT编译 -- 添加用户自定义app

说明:因为笔记的开发板上支持bash,所以此处使用的bash,但是Openwrt默认是使用ash,可以将bash替换成ash进行测试。
然后 编译上传到开发板,之后进行安装

含义说明:
软件包安装前处理方法,使用脚本语言,调用时带入的参数为嵌入式系統的镜像目录。
软件包安装后处理方法,使用脚本语言。
软件包删除前处理方法,使用脚本语言。
软件包删除后处理方法,使用脚本语言。

二、编译源码,直接编译到内核中

进行 make menuconfig 进行选择 y 将其编译进固件。

编译选项
此时需要进行整个openwrt的全编译,使用

进行编译,编译完成后,重新烧写内核文件即可,内核启动完成,可以直接在/app/目录下看到 mycode 可执行程序的文件。

三、不使用源码编译

当然 ,如果不想这么麻烦的编辑Makefile,那么关于用户自定义添加的软件包的方法,还有另外一种比较省事情的方法,就是将通过交叉编译(我的交叉编译工具链为)完成的可执行程序文件 (比如本历程中的 mycode )直接放置在目录下 ,然后编译内核文件,再进行烧写即可,之后,可执行程序文件mycode也存在/app/下。
具体步骤以及指令可以使用:

此效果与上面的 的效果一样。

来源:青椒*^_^*凤爪爪

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年1月10日
下一篇 2020年1月10日

相关推荐