前言:

目前手上有一款产品需要做部分维护工作,它是基于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软件包相关推荐

  1. Openwrt增加对 sd card 支持

    一.硬件平台 1.1 控制器:MT7620(A9内核) 二.软件平台 2.1.开发环境:Ubuntu12.04 2.2.软件版本:openwrt 官方15.05版本SDK开发包(CHAOS CALME ...

  2. 【智能路由器】openwrt创建用户软件包

    [智能路由器]系列文章连接 http://blog.csdn.net/u012819339/article/category/5803489 openwrt根目录 先看看openwrt初次编译好后的目 ...

  3. openwrt取消strip 软件包

    https://forum.openwrt.org/viewtopic.php?id=15195 Hi all , anybody out there who are familiar with ma ...

  4. OpenWrt增加usb转串口支持

    环境 硬件:HLK_MTK7628n 系统:官方Openwrt 分支:master 硬件连接 usb转串口芯片直连MTK7628的原生USB接口,比如 CH340 PL2303 CP2012 操作步骤 ...

  5. linux openwrt插件,OpenWrt添加软件包(一)

    OpenWrt是一个比较完善的嵌入式Linux开发平台,人们可以在其基础上增加软件包,以扩大其应用范围.OpenWrt在增加软件方面使用极其方便,按照OpenWrt的约定就可以很简单完成. 加入的软件 ...

  6. openwrt配置内核驱动_openwrt 增加RTC(MCP7940 I2C总线)驱动详解

    标签: 一.硬件平台 1.1 控制器:MT7620(A9内核) 1.2 RTC芯片:MCP7940(I2C总线) 二.软件平台 2.1.开发环境:Ubuntu12.04 2.2.软件版本:openwr ...

  7. OpenWRT 添加第三方库

    简介 在OpenWRT 中,它已经包含许多开源库,在make menuconfig -> Libraries 中可以看到,有很多库都已经添加了. 当要用的库在OpenWRT里找不到时,就需要自己 ...

  8. GL-SF1200 路由器 利用 github actions 自编译软件包并安装

    背景介绍 GL-SF1200 路由器使用了siflower的SF19A28国产芯片,虽然也是mips架构,但由于经过了魔改,不论是mips_24kc还是mipsel_24kc的elf均无法在其上运行. ...

  9. openwrt入门经典案例

    一:下载编译 编译出来的镜像位于 bin 目录下面 其中 openwrt-ramips-rt305x-mpr-a2-squashfs-sysupgrade.bin 这个就是我们要的镜像.烧写到板子上面 ...

最新文章

  1. spring 框架学习(一)
  2. 冒泡排序 java_Java中的冒泡排序
  3. iOS 本地DNS解析方法
  4. Tracer cannot set value trace for type None. Supported types are tensor, tensor list, and tuple
  5. 使用静态库.framework注意事项
  6. OpenCV下的角点获取
  7. oracle恢复某个表的数据库,如何从rman的全备份中恢复一张表?
  8. 定时任务框架APScheduler学习详解
  9. 开源纯C#工控网关+组态软件(四)上下位机通讯原理
  10. java实现5 4 3 2 1递归_递归及递归的使用
  11. 微型计算机原理偏移地址,微机原理及应用复习
  12. UEditor快捷键
  13. 【CPRI】(3)帧格式详解(重点)
  14. Ubuntu——笔记本插入耳机没有声音的解决方案
  15. T8 ADS1299开发板的默认设置
  16. es7新特性随堂笔记
  17. thermal系列(7)-Thermal配置和调试
  18. 在WordPress评论里添加电话、手机号、微信号的表单功能教程
  19. Nao机器人运行B-human代码之开始篇 1
  20. type=“text/javascript“什么意思?

热门文章

  1. 当你感觉轻松的时候,就要警惕了
  2. form表单注意点合集(文本域、单选框、复选框、下拉框等)
  3. 数字化转型对于创业者有何机遇?
  4. EXCEL使用技巧-数据统计——统计指定sheet非空内容行数、指定内容在指定列出现次数
  5. LeeCode 1488 贪心 + STL
  6. Github项目分享——爬虫模拟登录各大平台
  7. 2023苹果电脑专用下载工具Folx5.27.13991
  8. Code Review 是软件开发中必不可少的一步
  9. 三星盖世4上手测评分享
  10. 路由器交换机:单臂路由静态路由