如何移植新软件包到自己的openwrt系统呢?我们继续往下看。
- openWRT 编译后将产生如下文件:
并且会将目录 staging_dir作为编译的临时安装目录,最终的生成文件保存在目录bin下
目 录 | 含 义 |
dl | 下载软件代码包 临时目录。编译前,将原始的软件代码包下载到该目录 |
feeds | 扩展软件包目录。将一些不常用的软件包放在其他代码库中,通过feed机制可以自定义下载及配置 |
bin | 编译完成后的最终成果目录。例如安装映像文件及 ipk 安装包 |
build_dir | 编译中间文件目录。 |
staging_dir | 编译安装目录。文件安装到这里,并由这里的文件生成最终的编译成果 |
tmp | 编译过程的大量临时文件都会在此 |
- feeds 目录
目录feeds用于保存扩展软件包,可以使用软件包编译扩展机制来进行扩展安装。
移植 新软件包步骤:
(1). 将要移植的软件包,依据包类别放入到feeds文件夹下相应的位置。建立软链接到编译主目录package目录下相应位置。
$ cd package/feeds/routing
$ ln -s ../../feeds/routing/frr ./ #相对位置待移植的 FRR
(2). 执行 ./sripts/feeds install -a 后,移植的新软件包将会显示在menuconfig配置菜单中。
$ cd ../../
$ make menuconfig
3. dl 目录
编译工具链、目标平台的软件包等需要下载的文件都放在dl目录下
在编译过程中,各类需要下载的包都保存在这个目录下 (编译过程中用的工具)
当编译的过程中.
如果出错,出错的原因是某个软件包下载错误或丢失,可以手动下载对应的软件包(压缩文件形式),并放在这个目录下,之后重新编译.
- 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
解决方法参考此链接:
小结:此篇文章主要记录 移植新软件包的过程;本文参考董少的博客内容,根据自己实现工作总结形成此文,在此感谢董少。