当前位置:   article > 正文

OpenWrt增加package软件包_openwrt package

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包的添加更改学习过程结束。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/609610
推荐阅读
相关标签
  

闽ICP备14008679号