1 -> openWrt 简介、下载源码、编译

本文记录 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
// 以上两种方法都未能解决问题。

编译过程中常见的错误有两类:

  1. 编译环境中,缺失编译依赖文件,如:json-c情况。
  2. 配置 openwrt 相关功能时,依赖内容冲突。
    根据错误提示信息,bing 或 google 逐一解决吧。

参考资料:
OpenWrt官方网站
OpenWrt github
大雕的github
江南、董少博客

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值