编译x-Wrt 全过程

参考自;​​​​​​c编译教程 | All about X-Wrt

  需要详细了解的小伙伴还请参看原文 ^-^

概念:

x-wrt(基于openwrt深度定制的发行版本)

编译系统: ubuntu22.04 

注意:

特别注意的是,整个编译过程,都是用 普通用户 操作,不要用 root用户 操作。

安装编译所需要的软件包:

sudo apt install build-essential ecj fastjar file flex g++ gcc-multilib g++-multilib gawk gettext git git-core java-propose-classpath libelf-dev libncurses5-dev libncursesw5-dev libssl-dev swig python3 python3-dev python3-distutils python3-pyelftools subversion unzip wget zlib1g-dev rsync qemu-utils

安装结果如下:

下载源码:

从github上clone源码:

git clone https://github.com/x-wrt/x-wrt.git

进入上面拉取过来的文件夹

cd x-wrt

#更新代码tag:

git fetch origin

git fetch origin --tag

#列出可以使用的版本tag:

git tag

#注意摁 q 键结束

#或者直接获取最新发布版本

git describe --tags $(git rev-list --tags --max-count=1)

#选择并切换到指定的版本tag:

git checkout -f <tag-name>

在 Git 中,"tag"(标签)是一种用于标记特定提交点的机制,它给该提交点一个易于记忆和引用的名字。

例如

git checkout -f 22.03_b202204051420

#或者 直接切换到最新版本额度tag

git checkout -f $(git describe --tags $(git rev-list --tags --max-count=1))

#更新代码:

./scripts/feeds update -a

./scripts/feeds install -a

配置固件

配置步骤

配置固件的命令make menuconfig 但是我们可以从配置模版开始会更轻松一些。

比如ramips-mt7621的设备可以用拷贝这个模版feeds/x/rom/lede/config.ramips-mt7621 内核分区限制小的设备,选用 -nosymbol 结尾的config配置模版

cp feeds/x/rom/lede/config.ramips-mt7621 .config

# 上面已经cp 拷贝了模版配置到 .config # 例如

cp feeds/x/rom/lede/config.ramips-mt7621 .config # 下面继续操作和修改

#1 执行 make menuconfig

#2 进入 Target Profile 选择需要编译打包的设备型号,选择型号后立刻退出,保存

#3 执行下面的命令修复 .config

sh feeds/x/rom/lede/fix-config.sh

#4 再次执行 make menuconfig 然后立刻退出保存

#5 最后一次 执行 make menuconfig 自定义选择你需要的软件包

更多配置

配置目标

在上述准备好的模版配置文件的基础上,执行make menuconfig命令进行个性化定制,增删应用。

定位到各个子菜单,选择对应的软件包

执行编译

命令:

make

或者

make -j1 V=s

生成的包在bin/targets/下面

如果需要再次修改配置编译,只要不是换设备,都可以直接 make menuconfig 修改后就编译,如果需要修改设备,请从拷贝模版配置的地方重新开始配置。

在使用 make 命令时,-lV=s 是两个不同的选项,它们各自有不同的作用:

  • -l:这个选项告诉 make 在执行时不要超过指定的负载(load)。如果系统同时运行的 make 实例太多,make 将等待直到负载降低到这个阈值以下。这有助于避免在构建过程中过度使用系统资源。

  • V=s:这里的 V 选项设置 make 的详细程度(verbosity)。s 通常代表 "silent"(静默),意味着 make 将尽可能少地显示信息,通常只显示错误和警告。这有助于减少输出的噪音,特别是在日志文件中。

将这两个选项结合起来使用 make -l V=s 可能不是一个有效的命令,因为 -l 选项后面通常需要跟一个数字来指定负载限制,例如 make -l1。如果您的意图是设置详细程度为静默,并且限制系统负载,您应该分开写这两个选项,或者在 -l 后面提供一个具体的数字

总结

 我们编译固件的时候一定要看编译出来的调试信息,缺少什么就去下载什么。

 编译make menuconfig 的时候我们很多时候不用手动的去 一个个在菜单里面去选,可以直接 cp 前人配置好的 config配置文件到  .config 里面,再执行

sh feeds/x/rom/lede/fix-config.sh

修复一下,即可配置成功,这个时候再次进去到make menuconfig 即可看到我们的配置结果,保存退出即可。

的以后如果我们有新的方案,要更新新的东西,我们修改config 文件即可,也没必要直接打开页面去配置。

我们在进行 编译前,如果有之前配置好的库文件,可以在当前目录下建立一个软链接,比如

ln -s /work/dl dl  

这样编译的时候,下载库和工具的时候,会优先查找本地路劲,如果找不到再到云端去找,这样我们把库和工具放在本地路径了,就省略了编译的时候去云端下载拉取的时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/797872.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

线程池笔记

笔记梳理 前言.PHONYC标准库头文件C/C通用或C特有头文件mkdirc_str()snprintfvsnprintfumaskopen函数可变参数列表va_startva_endfunctionalstatic_castpthread_cond_init_threads.emplace_backstd::bindstd::placeholdersThreadPool(const ThreadPool<T> &tp) dele…

springboot系列教程(三):全局异常映射(含源码)

一、异常分类 这里的异常分类从系统处理异常的角度看&#xff0c;主要分类两类&#xff1a;业务异常和系统异常。 1、业务异常 业务异常主要是一些可预见性异常&#xff0c;处理业务异常&#xff0c;用来提示用户的操作&#xff0c;提高系统的可操作性。常见的业务异常提示&…

学会电子期刊制作的必备工具

​随着数字化时代的到来&#xff0c;电子期刊作为一种新型的传播媒介&#xff0c;已经越来越受到大众的青睐。它以环保、便捷、互动性强等特点&#xff0c;逐渐成为传统纸质期刊的重要补充。那么&#xff0c;如何制作一款精美的电子期刊呢&#xff1f;本文将为你介绍学会电子期…

电子电气架构 --- 关于DoIP的一些闲思 上

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

什么? CSS 将支持 if() 函数了?

CSS Working Group 简称 CSSWG, 在近期的会议中决定将 if() 添加到 CSS Values Module Level 5 中。 详情可见&#xff1a;css-meeting-bot 、[css-values] if() function 当我看到这个消息的时候&#xff0c;心中直呼这很逆天了&#xff0c;我们知道像 less 这些 css 这些预…

给 「大模型初学者」 的 LLaMA 3 核心技术剖析

编者按&#xff1a; 本文旨在带领读者深入了解 LLaMA 3 的核心技术 —— 使用 RMSNorm 进行预归一化、SwiGLU 激活函数、旋转编码&#xff08;RoPE&#xff09;和字节对编码&#xff08;BPE&#xff09;算法。RMSNorm 技术让模型能够识别文本中的重点&#xff0c;SwiGLU 激活函…

传输层重点协议

目录 一、TCP协议 TCP协议段落格式 原理 1、确认应答机制 2、超时重传机制 3、连接管理机制 三次握手 四次挥手 &#xff08;1&#xff09;不能合并为三次挥手的原因 &#xff08;2&#xff09;延时应答机制—实现合并 &#xff08;3&#xff09;TIME_WAIT的作用 &…

代码随想录——不同路径Ⅱ(Leetcode 63)

题目链接 动态规划 class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m obstacleGrid.length;int n obstacleGrid[0].length;int[][] dp new int[m][n];// 遇到障碍则从(0,0)到达for(int i 0; i < m && obstacleGrid[i][0] …

基于Vue和UCharts的前端组件化开发:实现高效、可维护的词云图与进度条组件

基于Vue和UCharts的前端组件化开发&#xff1a;实现高效、可维护的词云图与进度条组件 摘要 随着前端技术的迅速发展和业务场景的日益复杂&#xff0c;传统的整块应用开发方式已无法满足现代开发的需求。组件化开发作为一种有效的解决方案&#xff0c;能够将系统拆分为独立、…

浏览器出现 502 Bad Gateway的原理分析以及解决方法

目录 前言1. 问题所示2. 原理分析3. 解决方法 前言 此类问题主要作为疑难杂症 1. 问题所示 2. 原理分析 502 Bad Gateway 错误表示服务器作为网关或代理时&#xff0c;从上游服务器收到了无效的响应 通常出现在充当代理或网关的网络服务器上&#xff0c;例如 Nginx、Apache…

Go 语言返回组装数据

文章id 文章标题 ..... 分类 字段 &#xff1a;[分类名&#xff0c;分类描述 .... ]标签字段 : [标签名, 标签id ..... ]type ArticleWithCategoryLabel struct {system.SysArticleCategoryName system.SysCategorie json:"category_name"LabelName system.SysLab…

2024年7月13日全国青少年信息素养大赛Python复赛小学高年级组真题

第一题 题目描述 握情况。他决定让每个人输入一个正整数 N (0≤N≤1000)&#xff0c;然后计算并输出(5*N)的值。请用 在一个神秘的王国里&#xff0c;国王希望通过一个简单的测试来评估他的子民对基 础数学运算的掌 Python 编写程序&#xff0c;程序执行后要求用户输入一个正…

50、haproxy+keepalive+nginx

keepalivehaproxy 客户端&#xff1a;192.168.168.21haproxy1&#xff1a;192.168.168.43haproxy2&#xff1a;192.168.168.44vip&#xff1a;192.168.168.100nginx1:192.168.168.31nginx2:192.168.168.32haproxykeepalive做高可用nginx做后台haproxy1haproxy2一起操作&#x…

121. 小红的区间翻转(卡码网周赛第二十五期(23年B站笔试真题))

题目链接 121. 小红的区间翻转&#xff08;卡码网周赛第二十五期&#xff08;23年B站笔试真题&#xff09;&#xff09; 题目描述 小红拿到了两个长度为 n 的数组 a 和 b&#xff0c;她仅可以执行一次以下翻转操作&#xff1a;选择a数组中的一个区间[i, j]&#xff0c;&#x…

监控房价和挂牌数量的工具-以成都房价为例

介绍 本文将介绍如何通过zervice提供的工具来监控成都房价&#xff08;其他城市或者地区类似&#xff09;&#xff0c;包括价格和挂牌数量。可以对购房一族提供数据参考。 数据来源 数据来源方面&#xff0c;本文以成都为例&#xff0c;我们会使用链家数据-> 选择地图找房…

《Linux系统编程篇》Visual Studio Code配置下载,中文配置,连接远程ssh ——基础篇

引言 vscode绝对值得推荐&#xff0c;非常好用&#xff0c;如果你能体会其中的奥妙的话。 工欲善其事&#xff0c;必先利其器 ——孔子 文章目录 引言下载VS Code配置VS Code中文扩展连接服务器 连接服务器测试确定服务器的IP地址VS code 配置ssh信息选择连接到主机选择这个添…

【JVM实战篇】内存调优:内存泄露危害+内存监控工具介绍+内存泄露原因介绍

文章目录 内存调优内存溢出和内存泄漏内存泄露带来什么问题内存泄露案例演示内存泄漏的常见场景场景一场景二 解决内存溢出的方法常用内存监控工具Top命令优缺点 VisualVM软件、插件优缺点监控本地Java进程监控服务器的Java进程&#xff08;生产环境不推荐使用&#xff09; Art…

微信小程序毕业设计-青少年科普教学系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

ubuntu服务器安装labelimg报错记录

文章目录 报错提示查看报错原因安装报错 报错提示 按照步骤安装完labelimg后&#xff0c;在终端输入labelImg后&#xff0c;报错&#xff1a; (labelimg) rootinteractive59753:~# labelImg ………………Got keys from plugin meta data ("xcb") QFactoryLoader::Q…

ArrayList模拟实现

ArrayList模拟实现 ArrayList 的初步介绍常见操作 ArrayList 的简单模拟实现 ArrayList 的初步介绍 ArrayList也叫做顺序表&#xff0c;底层是一个数组。 在创建顺序表 时就应该规定 里面元素的数据类型&#xff0c;其中不能直接传基本数据类型&#xff0c;例如int、char。需要…