OpenWrt增加package软件包
前言:
目前手上有一款产品需要做部分维护工作,它是基于OpenWrt开发的,也就是Linux,只不过原来的维护工作主要是C逻辑层,本次任务需要重新开辟一个package来独立执行整个任务逻辑,避免嵌套在其他进程中,故以下是自己的学习及预研记录。
(1)、理论基础
Linux启动过程:
①内核引导。
当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。
②运行init。
内核文件加载以后,就开始运行第一个程序 /sbin/init,它的作用是初始化系统环境。init 程序首先是需要读取配置文件 /etc/inittab。由于init是第一个运行的程序,它的进程编号(pid)就是1。其他所有进程都从它衍生,都是它的子进程。
③系统初始化。
在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。 它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。
像我现在这个项目中的启动文件是这样一句话,他是执行了rcS的脚本文件来进行初始化操作的。
④建立终端
rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。
⑤用户登录系统
开机启动程序加载完毕以后,就要让用户登录了。
一般有三种登录方式:
1)、命令行登录
2)、ssh登录
3)、图形界面登录
OpenWrt的启动流程主要:
1.Bootloader->
2.linux->
3./etc/preinit->
4./sbin/init->
5./etc/inittab ->
6./etc/init.d/rcS->
7./etc/rc.d/S*
基于OpenWrt的应用程序的开发:
(增加package、修改Makefile、编译、运行)
增加package的开发步骤:
①进入 openwrt/package/目录下
②创建三个文件
1)src:存放源代码,并且包含指定交叉编译环境的Makefile
2)Makefile:这个文件是用来让openwrt查找、添加、编译这个目 录的
3)File:(可选)通常存放配置文件
(2)、实际应用
基本步骤:
①、在package目录下创建一个目录
②、在刚才的目录文件夹下建立src文件夹,用来存放源码
③、在src中添加源文件
④、在src目录下添加Makefile文件
(3)、主要问题
问题1:
在添加完package文件后,发现单个文件编译报错,错误如下:
首先根据错误提示“recipe for target xxx”和“没有匹配的文件路径”。
解决办法:
回看自己的添加的文件夹,发现,文件夹的名字和里面的.c文件名字不同,但是Makefile中写的路径却写成了.c文件的名字,更改相同的名字重新编译显示如下:(没有错误)
随后对整个工程文件进行编译,并烧录到LG220中进行启动测试。结果并没有显示线程启动,查看编译提示,发现有一个单独的提示信息:
WARNING: skipping learn_text -- package not selected 这里我们需要 运行make menuconfig 在我们自己在Makefile中设置的目录下,找到
这里的路径名是指示自己的package在配置界面的那个目录下的,通过这里的路径提示,在menuconfig中开启自己添加的包,如下图所示:
随后再重新进行编译,依然还有错误,错误提示如下图所示:
检测src目录下的Makefile发现,刚才因为测试.c文件的正确性生成了两个GCC的.o文件,尝试删除文件之后,编译正常通过。但是烧录到设备中后出现了系统不能正常启动的问题。
重新核对编译文件,当看到启动顺序的设置时,发现设置冲突,由原来的118更改为116之后便可正常运行。运行结果如下图所示:
至此,本次Makefile文件及package包的添加更改学习过程结束。
OpenWrt增加package软件包相关推荐
- Openwrt增加对 sd card 支持
一.硬件平台 1.1 控制器:MT7620(A9内核) 二.软件平台 2.1.开发环境:Ubuntu12.04 2.2.软件版本:openwrt 官方15.05版本SDK开发包(CHAOS CALME ...
- 【智能路由器】openwrt创建用户软件包
[智能路由器]系列文章连接 http://blog.csdn.net/u012819339/article/category/5803489 openwrt根目录 先看看openwrt初次编译好后的目 ...
- openwrt取消strip 软件包
https://forum.openwrt.org/viewtopic.php?id=15195 Hi all , anybody out there who are familiar with ma ...
- OpenWrt增加usb转串口支持
环境 硬件:HLK_MTK7628n 系统:官方Openwrt 分支:master 硬件连接 usb转串口芯片直连MTK7628的原生USB接口,比如 CH340 PL2303 CP2012 操作步骤 ...
- linux openwrt插件,OpenWrt添加软件包(一)
OpenWrt是一个比较完善的嵌入式Linux开发平台,人们可以在其基础上增加软件包,以扩大其应用范围.OpenWrt在增加软件方面使用极其方便,按照OpenWrt的约定就可以很简单完成. 加入的软件 ...
- openwrt配置内核驱动_openwrt 增加RTC(MCP7940 I2C总线)驱动详解
标签: 一.硬件平台 1.1 控制器:MT7620(A9内核) 1.2 RTC芯片:MCP7940(I2C总线) 二.软件平台 2.1.开发环境:Ubuntu12.04 2.2.软件版本:openwr ...
- OpenWRT 添加第三方库
简介 在OpenWRT 中,它已经包含许多开源库,在make menuconfig -> Libraries 中可以看到,有很多库都已经添加了. 当要用的库在OpenWRT里找不到时,就需要自己 ...
- GL-SF1200 路由器 利用 github actions 自编译软件包并安装
背景介绍 GL-SF1200 路由器使用了siflower的SF19A28国产芯片,虽然也是mips架构,但由于经过了魔改,不论是mips_24kc还是mipsel_24kc的elf均无法在其上运行. ...
- openwrt入门经典案例
一:下载编译 编译出来的镜像位于 bin 目录下面 其中 openwrt-ramips-rt305x-mpr-a2-squashfs-sysupgrade.bin 这个就是我们要的镜像.烧写到板子上面 ...
最新文章
- spring 框架学习(一)
- 冒泡排序 java_Java中的冒泡排序
- iOS 本地DNS解析方法
- Tracer cannot set value trace for type None. Supported types are tensor, tensor list, and tuple
- 使用静态库.framework注意事项
- OpenCV下的角点获取
- oracle恢复某个表的数据库,如何从rman的全备份中恢复一张表?
- 定时任务框架APScheduler学习详解
- 开源纯C#工控网关+组态软件(四)上下位机通讯原理
- java实现5 4 3 2 1递归_递归及递归的使用
- 微型计算机原理偏移地址,微机原理及应用复习
- UEditor快捷键
- 【CPRI】(3)帧格式详解(重点)
- Ubuntu——笔记本插入耳机没有声音的解决方案
- T8 ADS1299开发板的默认设置
- es7新特性随堂笔记
- thermal系列(7)-Thermal配置和调试
- 在WordPress评论里添加电话、手机号、微信号的表单功能教程
- Nao机器人运行B-human代码之开始篇 1
- type=“text/javascript“什么意思?