如何移植新软件包到自己的openwrt系统呢?我们继续往下看。

  1. openWRT 编译后将产生如下文件:
    并且会将目录 staging_dir作为编译的临时安装目录,最终的生成文件保存在目录bin下

目 录

含 义

dl

下载软件代码包 临时目录。编译前,将原始的软件代码包下载到该目录

feeds

扩展软件包目录。将一些不常用的软件包放在其他代码库中,通过feed机制可以自定义下载及配置

bin

编译完成后的最终成果目录。例如安装映像文件及 ipk 安装包

build_dir

编译中间文件目录。

staging_dir

编译安装目录。文件安装到这里,并由这里的文件生成最终的编译成果

tmp

编译过程的大量临时文件都会在此

  1. feeds 目录
    目录feeds用于保存扩展软件包,可以使用软件包编译扩展机制来进行扩展安装。
    移植 新软件包步骤:
    (1). 将要移植的软件包,依据包类别放入到feeds文件夹下相应的位置。建立软链接到编译主目录package目录下相应位置。
$ cd package/feeds/routing
$ ln -s ../../feeds/routing/frr ./  #相对位置待移植的 FRR

(2). 执行 ./sripts/feeds install -a 后,移植的新软件包将会显示在menuconfig配置菜单中。

$ cd ../../
$ make menuconfig

使用openwrt作为frpc客户端连接_编译过程


3. dl 目录

编译工具链、目标平台的软件包等需要下载的文件都放在dl目录下

在编译过程中,各类需要下载的包都保存在这个目录下 (编译过程中用的工具)

当编译的过程中.

如果出错,出错的原因是某个软件包下载错误或丢失,可以手动下载对应的软件包(压缩文件形式),并放在这个目录下,之后重新编译.

  1. build_dir 目录
    交叉编译工具的编译中间文件目录 和 目标平台编译的结果文件。
    如:image、rootfs、uboot、dtb等编译结果;
    编译成功后会执行脚本打包结果、并拷贝到bin/target 文件夹下。
    5. staging_dir 目录
    作为编译的临时安装目录,内容如下:

    OpenWRT-19.07版本中的libyang库版本低,FRR依赖的版本为1.0.184,因此需要安装PKG_VERSION:=1.0.184 libyang库, 删除package/feeds/packages/libyang 文件夹下的内容,把libyang-1.0.184 的Makefil 文件拷贝到此目录下,再次编译OpenWRT的feeds包管理工具自动下载此版本的库文件。
include $(TOPDIR)/rules.mk

PKG_NAME:=libyang
PKG_VERSION:=1.0.184
PKG_RELEASE:=1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/CESNET/libyang/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=1a5637451b73c4c5683837eb4c51371bb084795f653bc1a5fc20fed5541b58bc

PKG_MAINTAINER:=Jakov Smolic <jakov.smolic@sartura.hr>
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE

CMAKE_INSTALL:=1
PKG_BUILD_PARALLEL:=1
CMAKE_BINARY_SUBDIR:=build

include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk

错误内容: satisfy_dependencies_for: Cannot satisfy the following dependencies for frr-vtysh

Collected errors:
 * satisfy_dependencies_for: Cannot satisfy the following dependencies for frr-vtysh:
 * 	more
 * opkg_install_cmd: Cannot install package frr-vtysh.
package/Makefile:65: recipe for target 'package/install' failed
make[2]: *** [package/install] Error 255
make[2]: Leaving directory '/home/robot/OpenWrt/LS1046A-19.07'
package/Makefile:108: recipe for target '/home/robot/OpenWrt/LS1046A-19.07/staging_dir/target-aarch64_generic_glibc/stamp/.package_install' failed
make[1]: *** [/home/robot/OpenWrt/LS1046A-19.07/staging_dir/target-aarch64_generic_glibc/stamp/.package_install] Error 2
make[1]: Leaving directory '/home/robot/OpenWrt/LS1046A-19.07'
/home/robot/OpenWrt/LS1046A-19.07/include/toplevel.mk:225: recipe for target 'world' failed
make: *** [world] Error 2

解决方法参考此链接:

小结:此篇文章主要记录 移植新软件包的过程;本文参考董少的博客内容,根据自己实现工作总结形成此文,在此感谢董少。