本文记录 openWrt 开发环境的搭建过程,及对openwrt系统认知.
第 1 节 openwrt 的简介
OpenWrt 项目始于 2004 年1月,其第一个版本采用了 LinkSys 的源码。在 LinkSys 的 代码收费后,改为采用正式发布的 Linux 内核来集成,并将 OpenWrt 完全模块化,不断推 出补丁和驱动。OpenWrt 是一个基于 Linux 的智能路由器操作系统,以 GPL 许可协议发行,用户可以自定义安装各种应用软件。
OpenWrt 的主要特点在于其高扩展性,并且文件系统可写,开发者无需在每一次修改后完全重新编译,只要编译自己的软件包即可,使用户可以自定义安装来管理路由器。
第 2 节 搭建编译环境 本文搭建环境是 ubuntu-16 64位系统,网络环境良好(下载编译环境中依赖包)。
2.1 下载源码
下载源码采用download rar包的方式,不要使用git clone的方式!!! 根据需求下载相应版本
https://github.com/openwrt/openwrt 本文记录使用的是 openwrt-19.07 版本。
2.2 安装 ubuntu 环境中编译依赖项
命令行输入
sudo apt-get update
然后输入
sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync
第 3 节 源码编译
进入 openwrt 的 源码目录后,依次执行如下语句,在此期间出现的警告或错误信息,一般是下载文件缺少,需逐一解决。
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig # 建议:首次编译时,不要选择很多配置包,越简洁越好。如果参考此文章、编译源码的话请看完第4节。
代码里不含第三方开源包,只包含开源包地址链接,手工下载编译依赖包
make -j1 download
解决此过程缺失的包。
make -j1 V=s # -j1 后面是线程数。第一次编译推荐用单线程,V=s 显示编译过程信息,便于解决出错问题。
第 4 节 编译过程记录
注意事项:
修改源下载路径 feeds.conf.default 文件中的内容:
# 修改为 github.com
src-git packages https://git.openwrt.org/feed/packages.git
src-git luci https://git.openwrt.org/project/luci.git
src-git routing https://git.openwrt.org/feed/routing.git
src-git telephony https://git.openwrt.org/feed/telephony.git
src-git freifunk https://github.com/freifunk/openwrt-packages.git
#src-git video https://github.com/openwrt/video.git
#src-git targets https://github.com/openwrt/targets.git
#src-git management https://github.com/openwrt-management/packages.git
#src-git oldpackages http://git.openwrt.org/packages.git
#src-link custom /usr/src/openwrt/custom-feed
整个编译过程出现很多错误,未留下全部记录,有些可惜。
错误记录
/home/laoli/routeOS/routing/build_dir/hostpkg/libubox-2020-12-12-35787769/blobmsg_json.c:23:24: fatal error: json/json.h: No such file or directory
#include <json/json.h>
compilation terminated.
解决方法:
// C 版本
sudo apt-get install libjson0-dev libjson0
// git 安装 未验证
git clone https://github.com/json-c/json-c.git
cd json-c
sh autogen.sh
./configure
make
sudo make install
// C ++ 版本
sudo apt-get install libjsoncpp-dev
// 以上两种方法都未能解决问题。
编译过程中常见的错误有两类:
- 编译环境中,缺失编译依赖文件,如:json-c情况。
- 配置 openwrt 相关功能时,依赖内容冲突。
根据错误提示信息,bing 或 google 逐一解决吧。