如何在Ubuntu 18.04(实体机)上配置OpenWRT的开发环境
一、安装虚拟机(实体机)
安装虚拟机或者实体机都可以,刚上手建议安装虚拟机,选择16.04版本或者18.04版本都OK,其openwrt开发环境的搭建过程大同小异,看自身情况选择即可。安装教程请参考其他资料,此处不再记录。因之前接触过一些Linux程序,故博主本人采用的是Ubuntu 18.04实体机。
二、换源
为避免后续遇到一些包的下载路径受网络环境限制的困难,故我们首先进行换源操作: ①打开“软件和更新”; ②将原来的“中国的服务器”更改为“mirrors.aliyun.com”; ③输入密码; ④换源完成,返回终端;
三、Ubuntu系统相关配置
1、打开终端,输入指令进行系统更新:
sudo apt-get update
2、输入指令安装一些库及必备程序: ①Ubuntu 16.04版本
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils libncurses5-dev ncurses-term zlib1g-dev gawk asciidoc libz-dev git-core uuid-dev libacl1-dev liblzo2-dev pkg-config libc6-dev curl libxml-parser-perl ocaml-nox
②Ubuntu 18.04版本
sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc zip
四、openwrt源码下载及编译
1、新建一个命名为“openwrt”的文件夹,并cd到该文件夹下运行获取OpenWRT源码指令(此步骤运行时间跟网速有关,多则几小时甚至跑崩,少则几分钟):
git clone https://git.lede-project.org/source.git lede
2、接上一步运行获取OpenWRT源码完成后,可以看到“openwrt”文件夹里自动生成名为“lede”的文件夹,我们cd到该文件夹,使用“ls”指令查看运行OpenWRT源码后下载回来的资源;
3、 cd到“scripts”脚本目录,下载feeds工具:
cd openwrt/lede/scripts
./feeds update -a
./feeds install -a
4、返回到上一层目录,运行指令进入定制页面:
make menuconfig
5、接上一步,进入定制界面后,按空格键选择相应的型号,本次开发使用的硬件为Raspberry Pi 3B(简称树莓派 3B),因此:
①Target System(目标系统)选择Broadcom BCM27XX系列; ②Subtarget(主控芯片)选择BCM2710 boards(64 bit); ③Target Profile(目标配置文件)选择Raspberry Pi 2B-1.2/3B/38+/3CM; ④向右选择“exit”并回车,在跳出的框图中选择“YES”;
6、接下来执行编译指令,两句指令都是对里面的包进行全局编译并展示详细编译信息,然后经过比第三步更冗长的等待,下载内容大概几个G:
make V=99 或者 make -j1 V=s
7、对上一点补充,编译过程也是资源包下载过程,有许多包的下载链接是直接挂到外网的,我们下载的时候就会受到一些限制,所以经常会遇到加载许久都未能下载完成的情况,这时我们可以进行如下操作: ①按住“Ctrl”键的同时点击资源包链接,该链接就会自动在浏览器中打开,并开始下载资源包;此时,我们就可以按“Ctrl”+“C”中断终端的编译进程;
②找到下载完成的资源包并将其复制到“openwrt/lede/dl”目录下;
③进入终端,重新开始输入指令进行编译;如果再遇到相同问题进行同上操作解决问题;
8、编译结束,OpenWRT环境搭建完成。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【Mysql-3】条件判断函数-CASE WHEN、IF、IFNULL详解
- Linux设备树语法详解
- 【Mysql进阶-2】图文并茂说尽Mysql索引
- 1.8W字|了不起的 TypeScript 入门教程(第二版)
- 【Mysql进阶-3】大量实例悟透EXPLAIN与慢查询
- 基于helium自动化测试的方法进行代码仓库梳理和备份
- 【SpringBoot注解-5】web项目相关注解
- rxjs里的Observable对象如何消费
- 正则表达式入门
- (在模仿中精进数据可视化02) 温室气体排放来源可视化
- ROS机器人URDF建模
- 这是我见过最牛逼的Shell,619行代码!
- 设计模式(五):利用原型模式复制几个葫芦娃
- Vue中数组变动监听
- which命令